def spawnMouseRotateTask(self): taskMgr.remove('manipulateCamera') if self.perspCollPlane: iRay = SelectionRay(base.direct.camera) iRay.collider.setFromLens(base.direct.camNode, 0.0, 0.0) iRay.collideWithBitMask(1) if base.direct.camera.getPos().getZ() >= 0: iRay.ct.traverse(self.perspCollPlane) else: iRay.ct.traverse(self.perspCollPlane2) if iRay.getNumEntries() > 0: entry = iRay.getEntry(0) hitPt = entry.getSurfacePoint(entry.getFromNodePath()) np = NodePath('temp') np.setPos(base.direct.camera, hitPt) self.coaMarkerPos = np.getPos() np.remove() self.coaMarker.setPos(self.coaMarkerPos) iRay.collisionNodePath.removeNode() del iRay self.camManipRef.setPos(self.coaMarkerPos) self.camManipRef.setHpr(base.direct.camera, ZERO_POINT) t = Task.Task(self.mouseRotateTask) if abs(base.direct.dr.mouseX) > 0.90000000000000002: t.constrainedDir = 'y' else: t.constrainedDir = 'x' taskMgr.add(t, 'manipulateCamera')
def OrthoTranslateTask(self, state): iRay = SelectionRay(base.direct.camera) iRay.collider.setFromLens(base.direct.camNode, base.direct.dr.mouseX, base.direct.dr.mouseY) iRay.collideWithBitMask(BitMask32.bit(21)) iRay.ct.traverse(base.direct.grid) entry = iRay.getEntry(0) hitPt = entry.getSurfacePoint(entry.getFromNodePath()) iRay.collisionNodePath.removeNode() del iRay if hasattr(state, 'prevPt'): base.direct.camera.setPos(base.direct.camera, state.prevPt - hitPt) state.prevPt = hitPt return Task.cont
def OrthoTranslateTask(self, state): # create ray from the camera to detect 3d position iRay = SelectionRay(base.direct.camera) iRay.collider.setFromLens(base.direct.camNode, base.direct.dr.mouseX, base.direct.dr.mouseY) #iRay.collideWithBitMask(1) iRay.collideWithBitMask(BitMask32.bit(21)) iRay.ct.traverse(base.direct.grid) entry = iRay.getEntry(0) hitPt = entry.getSurfacePoint(entry.getFromNodePath()) iRay.collisionNodePath.removeNode() del iRay if hasattr(state, 'prevPt'): base.direct.camera.setPos(base.direct.camera, (state.prevPt - hitPt)) state.prevPt = hitPt return Task.cont
def spawnMouseRotateTask(self): # Kill any existing tasks self.__stopManipulateCamera() if self.perspCollPlane: iRay = SelectionRay(base.direct.camera) iRay.collider.setFromLens(base.direct.camNode, 0.0, 0.0) iRay.collideWithBitMask(1) if base.direct.camera.getPos().getZ() >= 0: iRay.ct.traverse(self.perspCollPlane) else: iRay.ct.traverse(self.perspCollPlane2) if iRay.getNumEntries() > 0: entry = iRay.getEntry(0) hitPt = entry.getSurfacePoint(entry.getFromNodePath()) # create a temp nodePath to get the position np = NodePath('temp') np.setPos(base.direct.camera, hitPt) self.coaMarkerPos = np.getPos() np.remove() self.coaMarker.setPos(self.coaMarkerPos) iRay.collisionNodePath.removeNode() del iRay # Set at markers position in render coordinates self.camManipRef.setPos(self.coaMarkerPos) self.camManipRef.setHpr(base.direct.camera, ZERO_POINT) t = Task.Task(self.mouseRotateTask) if abs(base.direct.dr.mouseX) > 0.9: t.constrainedDir = 'y' else: t.constrainedDir = 'x' self.__startManipulateCamera(task=t)
def spawnMouseRotateTask(self): # Kill any existing tasks self.__stopManipulateCamera() if self.perspCollPlane: iRay = SelectionRay(base.direct.camera) iRay.collider.setFromLens(base.direct.camNode, 0.0, 0.0) iRay.collideWithBitMask(1) if base.direct.camera.getPos().getZ() >=0: iRay.ct.traverse(self.perspCollPlane) else: iRay.ct.traverse(self.perspCollPlane2) if iRay.getNumEntries() > 0: entry = iRay.getEntry(0) hitPt = entry.getSurfacePoint(entry.getFromNodePath()) # create a temp nodePath to get the position np = NodePath('temp') np.setPos(base.direct.camera, hitPt) self.coaMarkerPos = np.getPos() np.remove() self.coaMarker.setPos(self.coaMarkerPos) iRay.collisionNodePath.removeNode() del iRay # Set at markers position in render coordinates self.camManipRef.setPos(self.coaMarkerPos) self.camManipRef.setHpr(base.direct.camera, ZERO_POINT) t = Task.Task(self.mouseRotateTask) if abs(base.direct.dr.mouseX) > 0.9: t.constrainedDir = 'y' else: t.constrainedDir = 'x' self.__startManipulateCamera(task = t)