BGE Rasterizer methods to handle Screen Space - (getScreenPosition, getScreenVect, getScreenRay)

getScreenPosition(obj):
 - Gets the position of an object projected on screen space.

getScreenVect(x, y):
 - Gets the vector from the camera position in the screen coordinate direction.

getScreenRay(x, y, dist, property):
 - Look towards a screen coordinate (x,y) and find first object hit within dist that matches prop.
- The ray is a call to KX_GameObject->rayCastTo from the KX_Camera object.

Patch [#18589] test files can be found there. Patch reviewed by Campbell
This commit is contained in:
Dalai Felinto
2009-04-23 00:49:38 +00:00
parent e8f5c75005
commit 7ac233be8a
3 changed files with 171 additions and 1 deletions

View File

@@ -44,6 +44,49 @@ Example Uses an L{SCA_MouseSensor}, and two L{KX_ObjectActuator}s to implement M
"""
def getScreenPosition(arg):
"""
Gets the position of an object projected on screen space.
Example:
# For an object in the middle of the screen, coord = [0.5,0.5]
coord = Rasterizer.getScreenPosition(object)
@param arg: L{KX_GameObject}, object name or list [x, y, z]
@rtype: list [x, y]
@return: the object's position in screen coordinates.
"""
def getScreenVect(x, y):
"""
Gets the vector from the camera position in the screen coordinate direction.
Example:
# Gets the vector of the camera front direction:
m_vect = Rasterizer.getScreenVect(0.5,0.5)
@type x: float
@type y: float
@rtype: 3d vector
@return: the vector from a screen coordinate.
"""
def getScreenRay(x, y, dist, property):
"""
Look towards a screen coordinate (x,y) and find first object hit within dist that matches prop.
The ray is similar to KX_GameObject->rayCastTo.
Example:
# Gets an object with a property "wall" in front of the camera within a distance of 100:
target = Rasterizer.getScreenRay(0.5,0.5,100,"wall")
@type x: float
@type y: float
@param dist: max distance to look (can be negative => look behind); 0 or omitted => detect up to other
@type dist: float
@param prop: property name that object must have; can be omitted => detect any object
@type prop: string
@rtype: L{KX_GameObject}
@return: the first object hit or None if no object or object does not match prop
"""
def getWindowWidth():
"""
Gets the width of the window (in pixels)