def setupBoardingSphere(self, bitmask = PiratesGlobals.RadarShipBitmask):
     self.removeBoardingSphere()
     tubeName = self.uniqueName('proximityCollision')
     result = self.createShipTube(tubeName, bitmask)
     self.interactTube = result[2]
     self.interactTube.setTag('objType', str(PiratesGlobals.COLL_AV))
     self.interactTube.setTag('avId', str(self.doId))
     sphereScale = ShipGlobals.getBoardingSphereScale(self.modelClass)
     spherePosH = ShipGlobals.getBoardingSpherePosH(self.modelClass)
     self.interactTube.setY(spherePosH[0][1])
     self.proximityCollisionEnterEvent = 'enter' + tubeName
Exemplo n.º 2
0
 def setupBoardingSphere(self, bitmask=PiratesGlobals.RadarShipBitmask):
     self.removeBoardingSphere()
     tubeName = self.uniqueName('proximityCollision')
     result = self.createShipTube(tubeName, bitmask)
     self.interactTube = result[2]
     self.interactTube.setTag('objType', str(PiratesGlobals.COLL_AV))
     self.interactTube.setTag('avId', str(self.doId))
     sphereScale = ShipGlobals.getBoardingSphereScale(self.modelClass)
     spherePosH = ShipGlobals.getBoardingSpherePosH(self.modelClass)
     self.interactTube.setY(spherePosH[0][1])
     self.proximityCollisionEnterEvent = 'enter' + tubeName
 def avatarBoardShipFromShip(self, ship, fromShip, showMovie, ts):
     self.av.wrtReparentTo(fromShip.getModelRoot())
     avPos = self.av.getPos()
     deckPos = None
     deckPos = ship.getClosestBoardingPos()
     if not deckPos:
         (deckPos, h) = ShipGlobals.getBoardingSpherePosH(ship.modelClass)
     
     offset = Point3(4 * random.random() - 2, 4 * random.random() - 2, 0)
     deckPos += offset
     endPos = self.av.getParent().getRelativePoint(ship.getModelRoot(), Point3(deckPos) + Point3(0, 0, 10))
     if showMovie:
         (rope, ropeActor, ropeEndNode) = self.av.getRope()
         ropeAnchorNode = fromShip.getRopeAnchorNode(self.av, ropeEndNode)
         rightHand = self.av.rightHandNode
         leftHand = self.av.leftHandNode
         rope.setup(3, ((None, Point3(0, 0, 0)), (self.av, Point3(10, 20, 40)), (ropeAnchorNode, Point3(0, 0, 0))))
         rope.reparentTo(ropeEndNode)
         ropeActor.reparentTo(leftHand)
         ropeActor.hide()
         midPos = (avPos + endPos) * 0.5
         tWaitToTranslateZ = self.av.getDuration('swing_aboard', fromFrame = 0, toFrame = 42)
         tTranslateZ = self.av.getDuration('swing_aboard', fromFrame = 42, toFrame = 45)
         tWaitToAttachRope = self.av.getDuration('swing_aboard', fromFrame = 0, toFrame = 45)
         tWaitToDetachRope = self.av.getDuration('swing_aboard', fromFrame = 0, toFrame = 75)
         tRopeSwingDown = 0.75
         tRopeSwing = tWaitToDetachRope - tWaitToAttachRope
         tRopeSwingAway = 0.75
         if self.swingTrack:
             self.swingTrack.pause()
             self.swingTrack = None
         
         if self.av.isLocal():
             ship.forceZoneLevel(0)
         
         swingTrack = Sequence(Func(self.av.lookAt, ship.getModelRoot()), Func(ship.boardingInit, self.av, fromShip), Func(ropeEndNode.wrtReparentTo, self.av), Parallel(self.av.actorInterval('swing_aboard'), ActorInterval(ropeActor, 'swing_aboard'), Sequence(Wait(tWaitToAttachRope - tRopeSwingDown), LerpPosInterval(ropeEndNode, tRopeSwingDown, Point3(1.0, 0, 3.0))), Sequence(Wait(tWaitToTranslateZ), LerpPosInterval(self.av, tTranslateZ, avPos + Point3(0.0, 0, 25.0))), Sequence(Wait(tWaitToAttachRope), Func(rope.reparentTo, leftHand), Func(ropeActor.show), LerpPosInterval(self.av, tRopeSwing / 2.0, midPos), Func(self.av.wrtReparentTo, ship.getModelRoot()), LerpPosInterval(self.av, tRopeSwing / 2.0, deckPos)), Sequence(Wait(tWaitToDetachRope), Func(rope.reparentTo, ropeEndNode), Func(ropeActor.detachNode), LerpPosInterval(ropeEndNode, tRopeSwingAway, Point3(0, 50, 50)))), Func(fromShip.boardingLeaveShip, self.av), Func(ship.boardingFinish, self.av, deckPos))
         self.swingTrack = swingTrack
         self.swingTrack.start(ts)
     elif self.swingTrack:
         self.swingTrack.pause()
         self.swingTrack = None
     
     ship.boardingInit(self.av, ship)
     self.av.setPos(deckPos)
     fromShip.boardingLeaveShip(self.av)
     if self._shipBoardingFinishCall:
         self._shipBoardingFinishCall.destroy()
     
     self._shipBoardingFinishCall = FrameDelayedCall('shipToShipBoardingFinish-%s-%s' % (ship.doId, self.av.doId), Functor(ship.boardingFinish, self.av, deckPos))
Exemplo n.º 4
0
 def avatarBoardShipFromShip(self, ship, fromShip, showMovie, ts):
     self.av.wrtReparentTo(fromShip.getModelRoot())
     avPos = self.av.getPos()
     deckPos = None
     deckPos = ship.getClosestBoardingPos()
     if not deckPos:
         deckPos, h = ShipGlobals.getBoardingSpherePosH(ship.modelClass)
     offset = Point3(4 * random.random() - 2, 4 * random.random() - 2, 0)
     deckPos += offset
     endPos = self.av.getParent().getRelativePoint(ship.getModelRoot(), Point3(deckPos) + Point3(0, 0, 10))
     if showMovie:
         rope, ropeActor, ropeEndNode = self.av.getRope()
         ropeAnchorNode = fromShip.getRopeAnchorNode(self.av, ropeEndNode)
         rightHand = self.av.rightHandNode
         leftHand = self.av.leftHandNode
         rope.setup(3, ((None, Point3(0, 0, 0)), (self.av, Point3(10, 20, 40)), (ropeAnchorNode, Point3(0, 0, 0))))
         rope.reparentTo(ropeEndNode)
         ropeActor.reparentTo(leftHand)
         ropeActor.hide()
         midPos = (avPos + endPos) * 0.5
         tWaitToTranslateZ = self.av.getDuration('swing_aboard', fromFrame=0, toFrame=42)
         tTranslateZ = self.av.getDuration('swing_aboard', fromFrame=42, toFrame=45)
         tWaitToAttachRope = self.av.getDuration('swing_aboard', fromFrame=0, toFrame=45)
         tWaitToDetachRope = self.av.getDuration('swing_aboard', fromFrame=0, toFrame=75)
         tRopeSwingDown = 0.75
         tRopeSwing = tWaitToDetachRope - tWaitToAttachRope
         tRopeSwingAway = 0.75
         if self.swingTrack:
             self.swingTrack.pause()
             self.swingTrack = None
         if self.av.isLocal():
             ship.forceZoneLevel(0)
         swingTrack = Sequence(Func(self.av.lookAt, ship.getModelRoot()), Func(ship.boardingInit, self.av, fromShip), Func(ropeEndNode.wrtReparentTo, self.av), Parallel(self.av.actorInterval('swing_aboard'), ActorInterval(ropeActor, 'swing_aboard'), Sequence(Wait(tWaitToAttachRope - tRopeSwingDown), LerpPosInterval(ropeEndNode, tRopeSwingDown, Point3(1.0, 0, 3.0))), Sequence(Wait(tWaitToTranslateZ), LerpPosInterval(self.av, tTranslateZ, avPos + Point3(0.0, 0, 25.0))), Sequence(Wait(tWaitToAttachRope), Func(rope.reparentTo, leftHand), Func(ropeActor.show), LerpPosInterval(self.av, tRopeSwing / 2.0, midPos), Func(self.av.wrtReparentTo, ship.getModelRoot()), LerpPosInterval(self.av, tRopeSwing / 2.0, deckPos)), Sequence(Wait(tWaitToDetachRope), Func(rope.reparentTo, ropeEndNode), Func(ropeActor.detachNode), LerpPosInterval(ropeEndNode, tRopeSwingAway, Point3(0, 50, 50)))), Func(fromShip.boardingLeaveShip, self.av), Func(ship.boardingFinish, self.av, deckPos))
         self.swingTrack = swingTrack
         self.swingTrack.start(ts)
     else:
         if self.swingTrack:
             self.swingTrack.pause()
             self.swingTrack = None
         ship.boardingInit(self.av, ship)
         self.av.setPos(deckPos)
         fromShip.boardingLeaveShip(self.av)
         if self._shipBoardingFinishCall:
             self._shipBoardingFinishCall.destroy()
         self._shipBoardingFinishCall = FrameDelayedCall('shipToShipBoardingFinish-%s-%s' % (ship.doId, self.av.doId), Functor(ship.boardingFinish, self.av, deckPos))
     return