ObjectHandler.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. """
  2. This is just a sample code.
  3. LevelEditor, ObjectHandler, ObjectPalette should be rewritten
  4. to be game specific.
  5. """
  6. from direct.actor import Actor
  7. import ObjectGlobals as OG
  8. class ObjectHandler:
  9. """ ObjectHandler will create and update objects """
  10. def __init__(self, editor):
  11. self.editor = editor
  12. def createDoubleSmiley(self, horizontal=True):
  13. root = render.attachNewNode('doubleSmiley')
  14. a = loader.loadModel('models/smiley.egg')
  15. b = loader.loadModel('models/smiley.egg')
  16. if horizontal:
  17. a.setName('left')
  18. b.setName('right')
  19. a.setPos(-1, 0, 0)
  20. b.setPos(1, 0, 0)
  21. else:
  22. a.setName('top')
  23. b.setName('bottom')
  24. a.setPos(0, 0, 1)
  25. b.setPos(0, 0, -1)
  26. a.reparentTo(root)
  27. b.reparentTo(root)
  28. return root
  29. def updateDoubleSmiley(self, val, obj):
  30. objNP = obj[OG.OBJ_NP]
  31. if objNP.find('left'):
  32. objNP.find('left').setPos(-1 * val, 0, 0)
  33. objNP.find('right').setPos(val, 0, 0)
  34. else:
  35. objNP.find('top').setPos(0, 0, 1 * val)
  36. objNP.find('bottom').setPos(0, 0, -1 * val)
  37. def updateSmiley(self, val, obj):
  38. objNP = obj[OG.OBJ_NP]
  39. if base.direct:
  40. base.direct.deselectAllCB()
  41. for child in objNP.findAllMatches("+GeomNode"):
  42. child.removeNode()
  43. for i in range(val):
  44. a = loader.loadModel(obj[OG.OBJ_MODEL])
  45. b = a.find("+GeomNode")
  46. b.setPos(0, i*2, 0)
  47. b.reparentTo(objNP)
  48. a.removeNode()
  49. def createPanda(self):
  50. pandaActor = PandaActor()
  51. return pandaActor
  52. def createGrass(self):
  53. environ = loader.loadModel("models/environment.egg")
  54. environ.setScale(0.25,0.25,0.25)
  55. environ.setPos(-8,42,0)
  56. return environ
  57. class PandaActor(Actor.Actor):
  58. def __init__(self):
  59. Actor.Actor.__init__(self, "models/panda-model.egg")
  60. self.setScale(0.005)