DistributedNode.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. """DistributedNode module: contains the DistributedNode class"""
  2. from ShowBaseGlobal import *
  3. import NodePath
  4. import DistributedObject
  5. import Task
  6. class DistributedNode(DistributedObject.DistributedObject, NodePath.NodePath):
  7. """Distributed Node class:"""
  8. def __init__(self, cr):
  9. try:
  10. self.DistributedNode_initialized
  11. except:
  12. self.DistributedNode_initialized = 1
  13. DistributedObject.DistributedObject.__init__(self, cr)
  14. return None
  15. def disable(self):
  16. self.reparentTo(hidden)
  17. DistributedObject.DistributedObject.disable(self)
  18. def delete(self):
  19. try:
  20. self.DistributedNode_deleted
  21. except:
  22. self.DistributedNode_deleted = 1
  23. if not self.isEmpty():
  24. self.removeNode()
  25. DistributedObject.DistributedObject.delete(self)
  26. def generate(self):
  27. DistributedObject.DistributedObject.generate(self)
  28. def __cmp__(self, other):
  29. # DistributedNode inherits from NodePath, which inherits a
  30. # definition of __cmp__ from FFIExternalObject that uses the
  31. # NodePath's compareTo() method to compare different
  32. # NodePaths. But we don't want this behavior for
  33. # DistributedNodes; DistributedNodes should only be compared
  34. # pointerwise. A NodePath that happens to reference the same
  35. # node is still different from the DistributedNode. Thus, we
  36. # redefine __cmp__ to always return a failed comparison.
  37. return 1
  38. ### setParent ###
  39. def b_setParent(self, parentToken):
  40. self.setParent(parentToken)
  41. self.d_setParent(parentToken)
  42. return None
  43. def d_setParent(self, parentToken):
  44. self.sendUpdate("setParent", [parentToken])
  45. return None
  46. def setParent(self, parentToken):
  47. assert(self.cr.token2nodePath.has_key(parentToken))
  48. parent = self.cr.token2nodePath[parentToken]
  49. self.wrtReparentTo(parent)
  50. return None
  51. ###### set pos and hpr functions #######
  52. # setX provided by NodePath
  53. def d_setX(self, x):
  54. self.sendUpdate("setX", [x])
  55. # setY provided by NodePath
  56. def d_setY(self, y):
  57. self.sendUpdate("setY", [y])
  58. # setZ provided by NodePath
  59. def d_setZ(self, z):
  60. self.sendUpdate("setZ", [z])
  61. # setH provided by NodePath
  62. def d_setH(self, h):
  63. self.sendUpdate("setH", [h])
  64. # setP provided by NodePath
  65. def d_setP(self, p):
  66. self.sendUpdate("setP", [p])
  67. # setR provided by NodePath
  68. def d_setR(self, r):
  69. self.sendUpdate("setR", [r])
  70. def setXY(self, x, y):
  71. self.setX(x)
  72. self.setY(y)
  73. def d_setXY(self, x, y):
  74. self.sendUpdate("setXY", [x, y])
  75. def setXZ(self, x, z):
  76. self.setX(x)
  77. self.setZ(z)
  78. def d_setXZ(self, x, z):
  79. self.sendUpdate("setXZ", [x, z])
  80. # setPos provided by NodePath
  81. def d_setPos(self, x, y, z):
  82. self.sendUpdate("setPos", [x, y, z])
  83. # setHpr provided by NodePath
  84. def d_setHpr(self, h, p, r):
  85. self.sendUpdate("setHpr", [h, p, r])
  86. def setXYH(self, x, y, h):
  87. self.setX(x)
  88. self.setY(y)
  89. self.setH(h)
  90. def d_setXYH(self, x, y, h):
  91. self.sendUpdate("setXYH", [x, y, h])
  92. def setXYZH(self, x, y, z, h):
  93. self.setPos(x, y, z)
  94. self.setH(h)
  95. def d_setXYZH(self, x, y, z, h):
  96. self.sendUpdate("setXYZH", [x, y, z, h])
  97. # setPosHpr provided by NodePath
  98. def d_setPosHpr(self, x, y, z, h, p, r):
  99. self.sendUpdate("setPosHpr", [x, y, z, h, p, r])