We've got object rendering and positioning working.
[krufty_fps.git] / demo / Entity.py
blobb04a2a6505b7e411a344b544de541b8bb60e73f4
1 #!/usr/bin/python
2 # this is the Entity class
4 from PyOSG import osg, osgUtil, osgDB
6 def main():
7 print "Entity class...more documentation to come"
9 class Entity:
11 def __init__(self, engine, specs):
13 self.functions = {}
15 if specs.has_key('script') and specs['script'] != []:
16 try:
17 self.script = engine.readZipfile(specs['script'])
18 exec(self.script)
19 except:
20 print "Entity.__init__(): Couldn't find/exec script"
22 assert specs.has_key('contents')
23 self.name = specs['contents']
25 self.engine = engine
27 self.transform = osg.PositionAttitudeTransform()
29 if specs.has_key('model') and specs['model'] != '':
30 #try:
31 self.model = self.engine.readNodeFile(specs['model'])
32 #except:
33 # print "Entity.__init__(): Error loading node file"
34 # self.model = None
36 if self.model:
37 self.transform.addChild(self.model)
38 self.engine.root.addChild(self.transform)
40 if specs.has_key('pos'):
42 specs_pos = eval(specs['pos'])
43 pos = osg.Vec3d(specs_pos[0],
44 specs_pos[1],
45 specs_pos[2])
46 self.transform.setPosition(pos)
48 if specs.has_key('rot'):
49 specs_rot = eval(specs['rot'])
50 rot = osg.Quat(specs_rot[0], specs_rot[1],
51 specs_rot[2], 1)
52 self.transform.setAttitude(rot)
54 def draw(self, engine):
56 return
58 def event(self, event, data):
60 if self.functions.has_key(event):
61 #try:
62 self.functions[event](self, data)
63 #except:
64 # print "Entity.event(): Error running event callback"
66 return
68 if __name__ == '__main__': main()