DirectSession.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from PandaObject import *
  2. class DisplayRegionContext(PandaObject):
  3. def __init__(self, win, camera):
  4. self.win = win
  5. self.camera = camera
  6. self.cam = camera.getChild(0)
  7. self.camNode = self.cam.getNode(0)
  8. self.mouseData = win.getMouseData(0)
  9. self.mouseX = 0.0
  10. self.mouseY = 0.0
  11. #self.spawnContextTask()
  12. def __getitem__(self,key):
  13. return self.__dict__[key]
  14. def spawnContextTask(self):
  15. # First kill the existing task
  16. #taskMgr.removeTasksNamed('DIRECTContextTask')
  17. taskMgr.spawnTaskNamed(Task.Task(self.contextTask),
  18. 'DIRECTContextTask')
  19. def contextTask(self, state):
  20. # Window Data
  21. self.width = self.win.getWidth()
  22. self.height = self.win.getHeight()
  23. self.near = self.camNode.getNear()
  24. self.far = self.camNode.getFar()
  25. self.fovH = self.camNode.getHfov()
  26. self.fovV = self.camNode.getVfov()
  27. self.nearWidth = math.tan(deg2Rad(self.fovH / 2.0)) * self.near * 2.0
  28. self.nearHeight = math.tan(deg2Rad(self.fovV / 2.0)) * self.near * 2.0
  29. # Mouse Data
  30. # Last frame
  31. self.mouseLastX = self.mouseX
  32. self.mouseLastY = self.mouseY
  33. # This frame
  34. self.mousePixelX = self.mouseData.getX()
  35. self.mousePixelY = self.mouseData.getY()
  36. self.mouseX = ((self.mousePixelX / float(self.width)) * 2.0) - 1.0
  37. self.mouseY = ((self.mousePixelY / float(self.height)) * -2.0) + 1.0
  38. self.mouseDeltaX = self.mouseX - self.mouseLastX
  39. self.mouseDeltaY = self.mouseY - self.mouseLastY
  40. print self.mouseX, self.mouseY
  41. # Continue the task
  42. return Task.cont
  43. class DirectSession(PandaObject):
  44. def __init__(self):
  45. self.contextList = []
  46. self.contextList.append(DisplayRegionContext(self.win, self.camera))
  47. # Initialize the collection of selected nodePaths
  48. self.selectedNodePaths = {}
  49. self.lastSelected = None
  50. self.bboxList = []
  51. self.fControl = 0
  52. self.fAlt = 0
  53. self.fShift = 0
  54. """"
  55. def createBBox(self):
  56. bbox = hidden.attachNewNode(NamedNode())
  57. bbox.setName('bbox')
  58. bboxLines = GridLine new: bbox.
  59. bboxLines color: (VBase4 new: 1.0 y: 0.0 z: 0.0 w: 1.0).
  60. bboxLines thickness: 0.5.
  61. "Bottom face"
  62. bboxLines moveTo: 0.0 y: 0.0 z: 0.0.
  63. bboxLines drawTo: 1.0 y: 0.0 z: 0.0.
  64. bboxLines drawTo: 1.0 y: 1.0 z: 0.0.
  65. bboxLines drawTo: 0.0 y: 1.0 z: 0.0.
  66. bboxLines drawTo: 0.0 y: 0.0 z: 0.0.
  67. "Front Edge/Top face"
  68. bboxLines drawTo: 0.0 y: 0.0 z: 1.0.
  69. bboxLines drawTo: 1.0 y: 0.0 z: 1.0.
  70. bboxLines drawTo: 1.0 y: 1.0 z: 1.0.
  71. bboxLines drawTo: 0.0 y: 1.0 z: 1.0.
  72. bboxLines drawTo: 0.0 y: 0.0 z: 1.0.
  73. "Three remaining edges"
  74. bboxLines moveTo: 1.0 y: 0.0 z: 0.0.
  75. bboxLines drawTo: 1.0 y: 0.0 z: 1.0.
  76. bboxLines moveTo: 1.0 y: 1.0 z: 0.0.
  77. bboxLines drawTo: 1.0 y: 1.0 z: 1.0.
  78. bboxLines moveTo: 0.0 y: 1.0 z: 0.0.
  79. bboxLines drawTo: 0.0 y: 1.0 z: 1.0.
  80. bboxLines create: bboxLines lineNode.! !
  81. """
  82. class Line(LineSegs):
  83. def __init__(self):
  84. LineSegs.__init__(self)