BGE fix #20456 - 2.5: mouse position problem (offseted by 1 vertically)
In Blender 2.49 the win width and height were been calculated including an extra pixel (e.g. a fullscreen editor would be (width + 1) by (height + 1) ) In opposite to that, Blender 2.5 window/editor code were fixed to have the exact width,height size. So although the BGE canvas code was still the same as 2.49 it was producing a wrong result. I'm also adding some commentaries in the setViewport code. BGE is setting the viewports 1 pixel larger. the setViewport command is been used as if one should pass (minx, miny, width, height), while it should be (minx, miny, maxx, maxy). I will take care of that later, if any one has extra comments on that, please let me know.
This commit is contained in:
@@ -117,6 +117,11 @@ SetViewPort(
|
|||||||
int x1, int y1,
|
int x1, int y1,
|
||||||
int x2, int y2
|
int x2, int y2
|
||||||
){
|
){
|
||||||
|
/* x1 and y1 are the min pixel coordinate (e.g. 0)
|
||||||
|
x2 and y2 are the max pixel coordinate
|
||||||
|
the width,height is calculated including both pixels
|
||||||
|
therefore: max - min + 1
|
||||||
|
*/
|
||||||
int vp_width = (x2 - x1) + 1;
|
int vp_width = (x2 - x1) + 1;
|
||||||
int vp_height = (y2 - y1) + 1;
|
int vp_height = (y2 - y1) + 1;
|
||||||
int minx = m_frame_rect.GetLeft();
|
int minx = m_frame_rect.GetLeft();
|
||||||
@@ -166,7 +171,7 @@ void KX_BlenderCanvas::SetMousePosition(int x,int y)
|
|||||||
int winY = m_frame_rect.GetBottom();
|
int winY = m_frame_rect.GetBottom();
|
||||||
int winH = m_frame_rect.GetHeight();
|
int winH = m_frame_rect.GetHeight();
|
||||||
|
|
||||||
BL_warp_pointer(m_win, winX + x, winY + (winH-y-1));
|
BL_warp_pointer(m_win, winX + x, winY + (winH-y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,12 @@ void GPC_Canvas::ClearColor(float r, float g, float b, float a)
|
|||||||
|
|
||||||
void GPC_Canvas::SetViewPort(int x1, int y1, int x2, int y2)
|
void GPC_Canvas::SetViewPort(int x1, int y1, int x2, int y2)
|
||||||
{
|
{
|
||||||
|
/* x1 and y1 are the min pixel coordinate (e.g. 0)
|
||||||
|
x2 and y2 are the max pixel coordinate
|
||||||
|
the width,height is calculated including both pixels
|
||||||
|
therefore: max - min + 1
|
||||||
|
*/
|
||||||
|
|
||||||
/* XXX, nasty, this needs to go somewhere else,
|
/* XXX, nasty, this needs to go somewhere else,
|
||||||
* but where... definitly need to clean up this
|
* but where... definitly need to clean up this
|
||||||
* whole canvas/rendertools mess.
|
* whole canvas/rendertools mess.
|
||||||
|
|||||||
Reference in New Issue
Block a user