sunny83
06-01-2006 07:41:19
I am newbie to Pyogre.
and i encounter problem for the following code.
it shows error in the frame listener
Can anyone please help me , wats wrong with the code?
and i encounter problem for the following code.
class Bot(ogre.FrameListener):
def __init__(self,sceneManager):
#entity creation
self.sceneManager = sceneManager
self.entity = sceneManager.createEntity('Player','Base.003.mesh');
self.entity_node = sceneManager.rootSceneNode.createChildSceneNode(ogre.Vector3(128,25,128))
self.entity_node.attachObject(self.entity)
#parameter setup
self.height= 25.0
self.speed = 30.0
self.rotSpeed = 30.0
#rayscenequery
self.terrainRayQuery = tl.TerrainListener(self.entity_node,self.sceneManager)
root= ogre.Root.getSingleton()
root.addFrameListener(self.terrainRayQuery)
def frameStarted(self,frameEvent):
pass
# Terrain Listener using terrain ray query
import pyogre.ogre as ogre
class TerrainListener(ogre.FrameListener):
def __init__(self,target,sceneManager):
self.sceneManager = sceneManager
self.raySceneQuery = sceneManager.createRayQuery(ogre.Ray(target.position,
ogre.Vector3.NEGATIVE_UNIT_Y))
self.target = target
def frameStarted(self, frameEvent):
# clamp to terrain
updateRay = ogre.Ray()
updateRay.origin = self.target.position
updateRay.direction = ogre.Vector3.NEGATIVE_UNIT_Y
self.raySceneQuery.ray = updateRay
for queryResult in self.raySceneQuery.execute():
if queryResult.worldFragment is not None:
pos = self.target.position
self.target.position = (pos.x, pos.y - queryResult.distance + 15.0, pos.z)
break
return true
it shows error in the frame listener
Traceback (most recent call last):
File "C:\Python24\pyogre\ogre_demos\character.py", line 68, in ?
application.go()
File "C:\Python24\pyogre\ogre_demos\SampleFramework.py", line 23, in go
if not self._setUp():
File "C:\Python24\pyogre\ogre_demos\SampleFramework.py", line 48, in _setUp
self._createScene()
File "C:\Python24\pyogre\ogre_demos\character.py", line 28, in _createScene
self.player=Bot(sceneManager)
File "C:\Python24\pyogre\ogre_demos\character.py", line 59, in __init__
root.addFrameListener(self.terrainRayQuery)
File "C:\Python24\Lib\site-packages\pyogre\ogre.py", line 13524, in addFrameListener
return _ogre.Root_addFrameListener(*args)
TypeError: argument number 2: a 'Ogre::FrameListener *' is expected, 'TerrainListener' is received
Can anyone please help me , wats wrong with the code?