コード例 #1
0
ファイル: player.py プロジェクト: court-jus/Gate_OpenPortal
 def createPlayerCollisions(self):
     """ create a collision solid and ray for the player """
     cn = CollisionNode('player')
     cn.setFromCollideMask(COLLISIONMASKS['geometry'])
     cn.setIntoCollideMask(COLLISIONMASKS['portals'] | COLLISIONMASKS['exit'] | COLLISIONMASKS['lava'])
     cn.addSolid(CollisionSphere(0,0,0,3))
     solid = self.node.attachNewNode(cn)
     # TODO : find a way to remove that, it's the cause of the little
     # "push me left" effect we see sometime when exiting a portal
     self.base.cTrav.addCollider(solid,self.base.pusher)
     self.base.pusher.addCollider(solid,self.node, self.base.drive.node())
     # init players floor collisions
     ray = CollisionRay()
     ray.setOrigin(0,0,-.2)
     ray.setDirection(0,0,-1)
     cn = CollisionNode('playerRay')
     cn.setFromCollideMask(COLLISIONMASKS['player'])
     cn.setIntoCollideMask(BitMask32.allOff())
     cn.addSolid(ray)
     solid = self.node.attachNewNode(cn)
     self.nodeGroundHandler = CollisionHandlerQueue()
     self.base.cTrav.addCollider(solid, self.nodeGroundHandler)
     # init players ceil collisions
     ray = CollisionRay()
     ray.setOrigin(0,0,.2)
     ray.setDirection(0,0,1)
     cn = CollisionNode('playerUpRay')
     cn.setFromCollideMask(COLLISIONMASKS['player'])
     cn.setIntoCollideMask(BitMask32.allOff())
     cn.addSolid(ray)
     solid = self.node.attachNewNode(cn)
     self.ceilGroundHandler = CollisionHandlerQueue()
     self.base.cTrav.addCollider(solid, self.ceilGroundHandler)
コード例 #2
0
    def addRalph(self, pos):
        ralphStartPos = pos
        self.ralph = Actor("models/ralph",
                                 {"run":"models/ralph-run",
                                  "walk":"models/ralph-walk"})
        self.ralph.reparentTo(render)
        self.ralph.setScale(.2)
        self.ralph.setPos(ralphStartPos)
        self.cTrav = CollisionTraverser()

        self.ralphGroundRay = CollisionRay()
        self.ralphGroundRay.setOrigin(0,0,1000)
        self.ralphGroundRay.setDirection(0,0,-1)
        self.ralphGroundCol = CollisionNode('ralphRay')
        self.ralphGroundCol.addSolid(self.ralphGroundRay)
        self.ralphGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.ralphGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.ralphGroundColNp = self.ralph.attachNewNode(self.ralphGroundCol)
        self.ralphGroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.ralphGroundColNp, self.ralphGroundHandler)

        self.camGroundRay = CollisionRay()
        self.camGroundRay.setOrigin(0,0,1000)
        self.camGroundRay.setDirection(0,0,-1)
        self.camGroundCol = CollisionNode('camRay')
        self.camGroundCol.addSolid(self.camGroundRay)
        self.camGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.camGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.camGroundColNp = base.camera.attachNewNode(self.camGroundCol)
        self.camGroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.camGroundColNp, self.camGroundHandler)
コード例 #3
0
ファイル: Player.py プロジェクト: czorn/Modifire
 def CreateCollisionGeoms(self):
     self.collisionNode = self.pNode.attachNewNode('CollisionNode')
     
     collisionGeom = self.collisionNode.attachNewNode(CollisionNode("legsPlayer"))
     collisionGeom.node().addSolid(CollisionSphere(0, 0, 0.35, 0.3))
     collisionGeom.node().setFromCollideMask(Globals.ITEM_BITMASK)
     collisionGeom.node().setIntoCollideMask(Globals.PLAYER_BITMASK)
     #collisionGeom.show()
     collisionGeom.setPythonTag(Globals.TAG_COLLISION, Globals.COLLISION_LEG)
     collisionGeom.setPythonTag(Globals.TAG_PLAYER, self)
     
     collisionGeom = self.collisionNode.attachNewNode(CollisionNode("bodyPlayer"))
     collisionGeom.node().addSolid(CollisionSphere(0, 0, 0.9, 0.3))
     collisionGeom.node().setFromCollideMask(BitMask32.allOff())
     collisionGeom.node().setIntoCollideMask(Globals.PLAYER_BITMASK)
     #collisionGeom.show()
     collisionGeom.setPythonTag(Globals.TAG_COLLISION, Globals.COLLISION_BODY)
     collisionGeom.setPythonTag(Globals.TAG_PLAYER, self)
     
     collisionGeom = self.collisionNode.attachNewNode(CollisionNode("headPlayer"))
     collisionGeom.node().addSolid(CollisionSphere(0, 0, 1.45, 0.35))
     collisionGeom.node().setFromCollideMask(BitMask32.allOff())
     collisionGeom.node().setIntoCollideMask(Globals.PLAYER_BITMASK)
     collisionGeom.setPythonTag(Globals.TAG_COLLISION, Globals.COLLISION_HEAD)
     collisionGeom.setPythonTag(Globals.TAG_PLAYER, self)
コード例 #4
0
 def initializeSmartCameraCollisions(self):
     if self.initialized:
         return
     self.ccTrav = CollisionTraverser('LocalAvatar.ccTrav')
     self.ccLine = CollisionSegment(0.0, 0.0, 0.0, 1.0, 0.0, 0.0)
     self.ccLineNode = CollisionNode('ccLineNode')
     self.ccLineNode.addSolid(self.ccLine)
     self.ccLineNodePath = base.localAvatar.attachNewNode(self.ccLineNode)
     self.ccLineBitMask = CIGlobals.CameraBitmask
     self.ccLineNode.setFromCollideMask(self.ccLineBitMask)
     self.ccLineNode.setIntoCollideMask(BitMask32.allOff())
     self.camCollisionQueue = CollisionHandlerQueue()
     self.ccTrav.addCollider(self.ccLineNodePath, self.camCollisionQueue)
     self.ccSphere = CollisionSphere(0, 0, 0, 1)
     self.ccSphereNode = CollisionNode('ccSphereNode')
     self.ccSphereNode.addSolid(self.ccSphere)
     self.ccSphereNodePath = base.camera.attachNewNode(self.ccSphereNode)
     self.ccSphereNode.setFromCollideMask(CIGlobals.CameraBitmask)
     self.ccSphereNode.setIntoCollideMask(BitMask32.allOff())
     self.camPusher = CollisionHandlerPusher()
     self.camPusher.addCollider(self.ccSphereNodePath, base.camera)
     self.camPusher.setCenter(base.localAvatar)
     self.ccPusherTrav = CollisionTraverser('LocalAvatar.ccPusherTrav')
     self.ccSphere2 = self.ccSphere
     self.ccSphereNode2 = CollisionNode('ccSphereNode2')
     self.ccSphereNode2.addSolid(self.ccSphere2)
     self.ccSphereNodePath2 = base.camera.attachNewNode(self.ccSphereNode2)
     self.ccSphereNode2.setFromCollideMask(CIGlobals.CameraBitmask)
     self.ccSphereNode2.setIntoCollideMask(BitMask32.allOff())
     self.camPusher2 = CollisionHandlerPusher()
     self.ccPusherTrav.addCollider(self.ccSphereNodePath2, self.camPusher2)
     self.camPusher2.addCollider(self.ccSphereNodePath2, base.camera)
     self.camPusher2.setCenter(base.localAvatar)
     self.camFloorRayNode = base.localAvatar.attachNewNode('camFloorRayNode')
     self.ccRay = CollisionRay(0.0, 0.0, 0.0, 0.0, 0.0, -1.0)
     self.ccRayNode = CollisionNode('ccRayNode')
     self.ccRayNode.addSolid(self.ccRay)
     self.ccRayNodePath = self.camFloorRayNode.attachNewNode(self.ccRayNode)
     self.ccRayBitMask = CIGlobals.FloorBitmask
     self.ccRayNode.setFromCollideMask(self.ccRayBitMask)
     self.ccRayNode.setIntoCollideMask(BitMask32.allOff())
     self.ccTravFloor = CollisionTraverser('LocalAvatar.ccTravFloor')
     self.camFloorCollisionQueue = CollisionHandlerQueue()
     self.ccTravFloor.addCollider(self.ccRayNodePath, self.camFloorCollisionQueue)
     self.ccTravOnFloor = CollisionTraverser('LocalAvatar.ccTravOnFloor')
     self.ccRay2 = CollisionRay(0.0, 0.0, 0.0, 0.0, 0.0, -1.0)
     self.ccRay2Node = CollisionNode('ccRay2Node')
     self.ccRay2Node.addSolid(self.ccRay2)
     self.ccRay2NodePath = self.camFloorRayNode.attachNewNode(self.ccRay2Node)
     self.ccRay2BitMask = CIGlobals.FloorBitmask
     self.ccRay2Node.setFromCollideMask(self.ccRay2BitMask)
     self.ccRay2Node.setIntoCollideMask(BitMask32.allOff())
     self.ccRay2MoveNodePath = hidden.attachNewNode('ccRay2MoveNode')
     self.camFloorCollisionBroadcaster = CollisionHandlerFloor()
     self.camFloorCollisionBroadcaster.setInPattern('on-floor')
     self.camFloorCollisionBroadcaster.setOutPattern('off-floor')
     self.camFloorCollisionBroadcaster.addCollider(self.ccRay2NodePath, self.ccRay2MoveNodePath)
     self.cTrav.addCollider(self.ccRay2NodePath, self.camFloorCollisionBroadcaster)
     self.initialized = True
コード例 #5
0
ファイル: bulletCamera.py プロジェクト: Wully616/Swifter
    def setUpCamera(self):
        """ puts camera behind the player in third person """
        
        
        # Set up the camera
        # Adding the camera to actor is a simple way to keep the camera locked
        # in behind actor regardless of actor's movement.
        base.camera.reparentTo(self.actor)
        # We don't actually want to point the camera at actors's feet.
        # This value will serve as a vertical offset so we can look over the actor
        self.cameraTargetHeight = 0.5
        # How far should the camera be from the actor
        self.cameraDistance = 10
        # Initialize the pitch of the camera
        self.cameraPitch = 45
        
        # The mouse moves rotates the camera so lets get rid of the cursor
        props = WindowProperties()
        props.setCursorHidden(True)
        base.win.requestProperties(props)
        
        #set up FOV
        pl =  base.cam.node().getLens()
        pl.setFov(70)
        base.cam.node().setLens(pl)
        
        # A CollisionRay beginning above the camera and going down toward the
        # ground is used to detect camera collisions and the height of the
        # camera above the ground. A ray may hit the terrain, or it may hit a
        # rock or a tree.  If it hits the terrain, we detect the camera's
        # height.  If it hits anything else, the camera is in an illegal
        # position.
        """
TODO::        This will need to be changed to bullet
        """
        self.cTrav = CollisionTraverser()
        self.groundRay = CollisionRay()
        self.groundRay.setOrigin(0,0,1000)
        self.groundRay.setDirection(0,0,-1)
        self.groundCol = CollisionNode('camRay')
        self.groundCol.addSolid(self.groundRay)
        self.groundCol.setFromCollideMask(BitMask32.bit(1))
        self.groundCol.setIntoCollideMask(BitMask32.allOff())
        self.groundColNp = base.camera.attachNewNode(self.groundCol)
        self.groundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.groundColNp, self.groundHandler)
        
        # We will detect anything obstructing the camera's view of the player

        self.cameraRay = CollisionSegment((0,0,self.cameraTargetHeight),(0,5,5))
        self.cameraCol = CollisionNode('cameraRay')
        self.cameraCol.addSolid(self.cameraRay)
        self.cameraCol.setFromCollideMask(BitMask32.bit(0))
        self.cameraCol.setIntoCollideMask(BitMask32.allOff())
        self.cameraColNp = self.actor.attachNewNode(self.cameraCol)
        self.cameraColHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.cameraColNp, self.cameraColHandler)
コード例 #6
0
ファイル: Swiftstar.py プロジェクト: 2015-CS454/rr-team
    def setupVehicle(self, bulletWorld):
        # Chassis
        shape = BulletBoxShape(Vec3(1, 2.2, 0.5))
        ts = TransformState.makePos(Point3(0, 0, .7))
        self.chassisNode = BulletRigidBodyNode('Vehicle')
        self.chassisNP = render.attachNewNode(self.chassisNode)
        self.chassisNP.node().addShape(shape, ts)
        self.chassisNP.node().notifyCollisions(True)
        self.chassisNP.setPosHpr(self.pos[0], self.pos[1], self.pos[2], self.pos[3], self.pos[4], self.pos[5])
        # self.chassisNP.setPos(-5.34744, 114.773, 6)
        # self.chassisNP.setPos(49.2167, 64.7968, 10)
        self.chassisNP.node().setMass(800.0)
        self.chassisNP.node().setDeactivationEnabled(False)

        bulletWorld.attachRigidBody(self.chassisNP.node())

        # np.node().setCcdSweptSphereRadius(1.0)
        # np.node().setCcdMotionThreshold(1e-7)

        # Vehicle
        self.vehicle = BulletVehicle(bulletWorld, self.chassisNP.node())
        self.vehicle.setCoordinateSystem(ZUp)
        bulletWorld.attachVehicle(self.vehicle)

        self.carNP = loader.loadModel('models/swiftstar-chassis')
        tex = loader.loadTexture("models/tex/Futuristic_Car_C.jpg")
        self.carNP.setTexture(tex)
        self.carNP.setScale(1, 1, .9)
        self.carNP.setCollideMask(BitMask32.allOn())
        self.carNP.reparentTo(self.chassisNP)

        # Right front wheel
        np = loader.loadModel('models/swiftstar-fr-tire')
        np.setCollideMask(BitMask32.allOff())
        np.reparentTo(render)
        self.addWheel(Point3(1, 1.1, 1), True, np)

        # Left front wheel
        np = loader.loadModel('models/swiftstar-fl-tire')
        np.setCollideMask(BitMask32.allOff())
        np.reparentTo(render)
        self.addWheel(Point3(-1, 1.1, 1), True, np)

        # Right rear wheel
        np = loader.loadModel('models/swiftstar-rr-tire')
        np.setCollideMask(BitMask32.allOff())
        np.reparentTo(render)
        self.addWheel(Point3(1.2, -2, .8), False, np)

        # Left rear wheel
        np = loader.loadModel('models/swiftstar-rl-tire')
        np.setCollideMask(BitMask32.allOff())
        np.reparentTo(render)
        self.addWheel(Point3(-1.2, -2, .8), False, np)
コード例 #7
0
 def setup_interactiongeometries(self):
     """
     set up collision rays, spheres, and planes for mouse manipulation
     :return: None
     author: weiwei
     date: 20161110
     """
     # create a trackball ray and set its bitmask to 8
     # the trackball ray must be a subnode of cam since we will
     # transform the clicked point (in the view of the cam) to the world coordinate system
     # using the ray
     self.tracker_cn = CollisionNode("tracker")
     self.tracker_ray = CollisionRay()
     self.tracker_cn.addSolid(self.tracker_ray)
     self.tracker_cn.setFromCollideMask(BitMask32.bit(8))
     self.tracker_cn.setIntoCollideMask(BitMask32.allOff())
     self.tracker_np = self.base.cam.attachNewNode(self.tracker_cn)
     # create an inverted collision sphere and puts it into a collision node
     # its bitmask is set to 8, and it will be the only collidable object at bit 8
     self.trackball_cn = CollisionNode("trackball")
     self.trackball_cn.addSolid(
         CollisionSphere(self.lookatpos_pdv3[0], self.lookatpos_pdv3[1],
                         self.lookatpos_pdv3[2], self.camdist))
     self.trackball_cn.setFromCollideMask(BitMask32.allOff())
     self.trackball_cn.setIntoCollideMask(BitMask32.bit(8))
     self.trackball_np = self.base.render.attachNewNode(self.trackball_cn)
     # self.trackball_np.show()
     # This creates a collision plane for mouse track
     self.trackplane_cn = CollisionNode("trackplane")
     self.trackplane_cn.addSolid(
         CollisionPlane(
             Plane(
                 Point3(-self.base.cam.getMat().getRow3(1)),
                 Point3(self.lookatpos_pdv3[0], self.lookatpos_pdv3[1],
                        0.0))))
     self.trackplane_cn.setFromCollideMask(BitMask32.allOff())
     self.trackplane_cn.setIntoCollideMask(BitMask32.bit(8))
     self.trackplane_np = self.base.render.attachNewNode(self.trackplane_cn)
     # self.trackplane_np.show()
     # creates a traverser to do collision testing
     self.ctrav = CollisionTraverser()
     # creates a queue type handler to receive the collision event info
     self.chandler = CollisionHandlerQueue()
     # register the ray as a collider with the traverser,
     # and register the handler queue as the handler to be used for the collisions.
     self.ctrav.addCollider(self.tracker_np, self.chandler)
     # create a pickerray
     self.picker_cn = CollisionNode('picker')
     self.picker_ray = CollisionRay()
     self.picker_cn.addSolid(self.picker_ray)
     self.picker_cn.setFromCollideMask(BitMask32.bit(7))
     self.picker_cn.setIntoCollideMask(BitMask32.allOff())
     self.picker_np = self.base.cam.attachNewNode(self.picker_cn)
     self.ctrav.addCollider(self.picker_np, self.chandler)
コード例 #8
0
ファイル: Board.py プロジェクト: agakax/arkanoid
 def createWallCollider(self):
     self.__colliderSideWalls = self.__board.attachNewNode(CollisionNode('boardSideWallsCNode'))
     point1, point2, point3, point4 = self.getWallVertices('left')
     self.__colliderSideWalls.node().addSolid(CollisionPolygon(point1, point2, point3, point4))
     point1, point2, point3, point4 = self.getWallVertices('right')
     self.__colliderSideWalls.node().addSolid(CollisionPolygon(point1, point2, point3, point4))
     self.__colliderSideWalls.node().setIntoCollideMask(self.WALL_MASK)
     self.__colliderSideWalls.node().setFromCollideMask(BitMask32.allOff())
     self.__colliderBackWall = self.__board.attachNewNode(CollisionNode('boardBackWallCNode'))
     point1, point2, point3, point4 = self.getWallVertices('back')
     self.__colliderBackWall.node().addSolid(CollisionPolygon(point1, point2, point3, point4))
     self.__colliderBackWall.node().setIntoCollideMask(self.WALL_MASK)
     self.__colliderBackWall.node().setFromCollideMask(BitMask32.allOff())
コード例 #9
0
ファイル: Ball.py プロジェクト: agakax/arkanoid
 def createCollider(self):
     self.__wallCollider = self.__ball.attachNewNode(CollisionNode('ballWallCNode'))
     radius = self.getBallRadius()
     self.__wallCollider.node().addSolid(CollisionSphere(0, 0, 0, radius))
     self.__wallCollider.node().setFromCollideMask(Board.WALL_MASK)
     self.__wallCollider.node().setIntoCollideMask(BitMask32.allOff())
     self.__blockCollider = self.__ball.attachNewNode(CollisionNode('ballBlockCNode'))
     self.__blockCollider.node().addSolid(CollisionSphere(0, 0, 0, radius))
     self.__blockCollider.node().setFromCollideMask(Block.BLOCK_MASK)
     self.__blockCollider.node().setIntoCollideMask(BitMask32.allOff())
     self.__paddleCollider = self.__ball.attachNewNode(CollisionNode('ballPaddleCNode'))
     self.__paddleCollider.node().addSolid(CollisionSphere(0, 0, 0, radius))
     self.__paddleCollider.node().setFromCollideMask(Paddle.PADDLE_MASK)
     self.__paddleCollider.node().setIntoCollideMask(BitMask32.allOff())
コード例 #10
0
    def startPhysics(self):
        #self.actorNode = ActorNode("playerPhysicsControler")
        #base.physicsMgr.attachPhysicalNode(self.actorNode)
        #self.actorNode.getPhysicsObject().setMass(self.player_mass)
        #self.mainNode = render.attachNewNode(self.actorNode)
        self.mainNode = render.attachNewNode("CharacterColliders")
        self.reparentTo(self.mainNode)

        charCollisions = self.mainNode.attachNewNode(
            CollisionNode(self.char_collision_name))
        #charCollisions.node().addSolid(CollisionSphere(0, 0, self.player_height/4.0, self.player_height/4.0))
        #charCollisions.node().addSolid(CollisionSphere(0, 0, self.player_height/4.0*3.05, self.player_height/4.0))
        charCollisions.node().addSolid(
            CollisionSphere(0, 0, self.player_height / 2.0,
                            self.player_height / 4.0))
        charCollisions.node().setIntoCollideMask(BitMask32(0x80))  # 1000 0000
        if self.show_collisions:
            charCollisions.show()
        self.pusher.addCollider(charCollisions, self.mainNode)
        base.cTrav.addCollider(charCollisions, self.pusher)

        charFFootCollisions = self.attachNewNode(CollisionNode("floor_ray"))
        charFFootCollisions.node().addSolid(CollisionRay(0, 0, 0.5, 0, 0, -1))
        #charFFootCollisions.node().addSolid(CollisionSegment((0, 0, 0.2), (0, 0, -1)))
        charFFootCollisions.node().setIntoCollideMask(BitMask32.allOff())
        charFFootCollisions.node().setFromCollideMask(
            BitMask32(0x7f))  # 0111 1111
        if self.show_collisions:
            charFFootCollisions.show()

        self.floor_handler = CollisionHandlerFloor()
        self.floor_handler.addCollider(charFFootCollisions, self.mainNode)
        #self.floor_handler.setOffset(0)
        self.floor_handler.setMaxVelocity(5)
        base.cTrav.addCollider(charFFootCollisions, self.floor_handler)

        self.accept("{}-in".format(self.char_collision_name),
                    self.checkCharCollisions)

        self.raytest_segment = CollisionSegment(0, 1)
        self.raytest_np = render.attachNewNode(CollisionNode("testRay"))
        self.raytest_np.node().addSolid(self.raytest_segment)
        self.raytest_np.node().setIntoCollideMask(BitMask32.allOff())
        self.raytest_np.node().setFromCollideMask(BitMask32(0x7f))  # 0111 1111
        if self.show_collisions:
            self.raytest_np.show()

        self.raytest_queue = CollisionHandlerQueue()
        self.rayCTrav.addCollider(self.raytest_np, self.raytest_queue)
コード例 #11
0
    def __init__(self, render, objid, start_pos, gameclient):
        self.client = gameclient
        self.id = objid
        self.motion_controller = None
        self.is_player = False

        # state  management
        self.isAnimating = False
        self.state = state.IDLE

        self.render = render  # scene graph root

        #  create the panda3d actor: just load a default model for now
        self.actor = Actor("models/ralph", {
            "run": "models/ralph-run",
            "walk": "models/ralph-walk"
        })

        self.actor.reparentTo(render)
        self.actor.setScale(.2)
        self.actor.setPos(start_pos)

        # prepare collision handling
        self.cTrav = CollisionTraverser()
        self.GroundRay = CollisionRay()
        self.GroundRay.setOrigin(0, 0, 1000)
        self.GroundRay.setDirection(0, 0, -1)
        self.GroundCol = CollisionNode('actorRay')
        self.GroundCol.addSolid(self.GroundRay)
        self.GroundCol.setFromCollideMask(BitMask32.bit(0))
        self.GroundCol.setIntoCollideMask(BitMask32.allOff())
        self.GroundColNp = self.actor.attachNewNode(self.GroundCol)
        self.GroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.GroundColNp, self.GroundHandler)
    def setupCollisions(self):
        #make a collision traverser, set it to default
        base.cTrav = CollisionTraverser()
        
        
        #self.cHandler = CollisionHandlerEvent()
        self.cHandler = CollisionHandlerPusher()
        
        #set the pattern for the event sent on collision
        # "%in" is substituted with the name of the into object
        #self.cHandler.setInPattern("hit-%in")
        
        cSphere = CollisionSphere((0,0,0), 10) #panda is scaled way down!
        cNode = CollisionNode("vtol")
        cNode.addSolid(cSphere)
        #panda is *only* a from object
        cNode.setFromCollideMask(BitMask32.bit(0))
        cNode.setIntoCollideMask(BitMask32.allOff())
        cNodePath = self.vtol.attachNewNode(cNode)
#        cNodePath.show()
        base.cTrav.addCollider(cNodePath, self.cHandler)
        self.cHandler.addCollider(cNodePath, self.vtol)
        #for b1 in self.house2:
        cTube1 = CollisionTube((-0.4,3,3), (-0.4,3,20), 6.8)
        cTube2 = CollisionTube((-0.4,-3,3), (-0.4,-3,20), 6.8)
        cNode = CollisionNode("models/houses/building")
        cNode.addSolid(cTube1)
        cNode.addSolid(cTube2)
        cNodePath = self.house2.attachNewNode(cNode)
        cTube1 = CollisionTube((-0.4,3,3), (-0.4,3,20), 6.8)
        cTube2 = CollisionTube((-0.4,-3,3), (-0.4,-3,20), 6.8)
        cNode = CollisionNode("models/houses/church")
        cNode.addSolid(cTube1)
        cNode.addSolid(cTube2)
        cNodePath = self.house1.attachNewNode(cNode)
コード例 #13
0
ファイル: ralph.py プロジェクト: DevanshiVyas/trex
            
    def placeCollectibles(self):
        self.placeCol = render.attachNewNode("Collectible-Placeholder")
        self.placeCol.setPos(0,0,0)
        
        # Add the health items to the placeCol node
        for i in range(self.numObjects):
            # Load in the health item model
            self.collect = loader.loadModel("models/trex")
            self.collect.setPos(0,0,0)
            self.collect.reparentTo(self.placeCol)
	    self.collect.setScale(0.1)
	    self.tex3= loader.loadTexture("models/Face.jpg")
	    self.collect.setTexture(self.tex3,1)
            
            self.placeItem(self.collect)
            
            # Add spherical collision detection
            colSphere = CollisionSphere(0,0,0,1)
            sphereNode = CollisionNode('colSphere')
            sphereNode.addSolid(colSphere)
            sphereNode.setFromCollideMask(BitMask32.allOff())
            sphereNode.setIntoCollideMask(BitMask32.bit(0))
            sphereNp = self.collect.attachNewNode(sphereNode)
            sphereColHandler = CollisionHandlerQueue()
コード例 #14
0
ファイル: ralph.py プロジェクト: DevanshiVyas/trex
    
    def placeHealthItems(self):
        self.placeholder = render.attachNewNode("HealthItem-Placeholder")
        self.placeholder.setPos(0,0,0)
        
        # Add the health items to the placeholder node
        for i in range(5):
            # Load in the health item model
            self.foodchick = loader.loadModel("models/chicken2")
            self.foodchick.setPos(0,0,0)
            self.foodchick.reparentTo(self.placeholder)
	    #self.tex2=self.setTexture("models/orange.jpg")
	    #self.foodchick.setTexture(self.tex2,1)
	    #self.tex2= loader.loadTexture("models/orange.jpg")
	    #self.foodchick.setTexture(self.tex1,1)
	

            
            self.placeItem(self.foodchick)
            
            # Add spherical collision detection
            healthSphere = CollisionSphere(0,0,0,1)
            sphereNode = CollisionNode('healthSphere')
            sphereNode.addSolid(healthSphere)
            sphereNode.setFromCollideMask(BitMask32.allOff())
            sphereNode.setIntoCollideMask(BitMask32.bit(0))
            sphereNp = self.foodchick.attachNewNode(sphereNode)
            sphereColHandler = CollisionHandlerQueue()
コード例 #15
0
ファイル: Ecco.py プロジェクト: anto004/game-programming
    def setupCoins2(self):
        # display coins = 0
        textN = TextNode('coin-score')
        textN.setText(str("Coins: " + str(self.coinsCollected2)))
        textN.setSlant(0.1)
        textNodePath = self.aspect2d.attachNewNode(textN)
        textNodePath.setPos(0, 0.95, 0.9)
        textNodePath.setScale(0.08)
        randNum = random.sample(range(0, 1500, 200), 6)

        # coins
        for i in range(6):
            randX = random.uniform(-3.0, 3.2)
            randY = float(randNum[i])
            shape = BulletSphereShape(0.3)
            coinNode = BulletGhostNode('Coin-' + str(i))
            coinNode.addShape(shape)
            np = self.render.attachNewNode(coinNode)
            np.setCollideMask(BitMask32.allOff())
            np.setPos(randX, randY, 2)

            # Adding sphere model
            sphereNp = loader.loadModel('models/smiley.egg')
            sphereNp_tex = loader.loadTexture("models/sky/coin_2_tex.jpg")
            sphereNp.setTexture(sphereNp_tex, 1)
            sphereNp.reparentTo(np)
            sphereNp.setScale(0.45)
            sphereNp.hprInterval(2.5, Vec3(360, 0, 0)).loop()

            self.world2.attachGhost(coinNode)
            self.coins2.append(coinNode)
            print "node name:" + str(coinNode.getName())
コード例 #16
0
ファイル: dynobject.py プロジェクト: anoriangit/NetRalph
    def __init__(self, render, objid, start_pos, gameclient):
        self.client = gameclient
        self.id = objid
        self.motion_controller = None
        self.is_player = False
        
        # state  management
        self.isAnimating = False
        self.state = state.IDLE
        
        self.render = render    # scene graph root
        
        #  create the panda3d actor: just load a default model for now
        self.actor = Actor("models/ralph",
                            {"run":"models/ralph-run",
                             "walk":"models/ralph-walk"})
                             
        self.actor.reparentTo(render)
        self.actor.setScale(.2)
        self.actor.setPos(start_pos)

        # prepare collision handling
        self.cTrav = CollisionTraverser()
        self.GroundRay = CollisionRay()
        self.GroundRay.setOrigin(0,0,1000)
        self.GroundRay.setDirection(0,0,-1)
        self.GroundCol = CollisionNode('actorRay')
        self.GroundCol.addSolid(self.GroundRay)
        self.GroundCol.setFromCollideMask(BitMask32.bit(0))
        self.GroundCol.setIntoCollideMask(BitMask32.allOff())
        self.GroundColNp = self.actor.attachNewNode(self.GroundCol)
        self.GroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.GroundColNp, self.GroundHandler)
    def InitCollision(self):
        #
        ray = CollisionRay(0, 0, 5, 0, 0, -1)
        self.HeroC = self.Hero.attachNewNode(CollisionNode('cnode'))
        self.HeroC.node().addSolid(ray)
        self.HeroC.show()
        self.HeroC.node().setIntoCollideMask(BitMask32.allOff())
        self.HeroC.node().setFromCollideMask(BitMask32.bit(2))

        plane1 = CollisionPolygon(Point3(-10, -10, 0.1), Point3(-2, -10, 0.1),
                                  Point3(-2, 10, 0.1), Point3(-10, 10, 0.1))
        plane2 = CollisionPolygon(Point3(-2, -10, 0.1), Point3(1, -10, -0.9),
                                  Point3(1, 10, -0.9), Point3(-2, 10, 0.1))
        plane3 = CollisionPolygon(Point3(1, -10, -0.9), Point3(5, -10, -0.9),
                                  Point3(5, 10, -0.9), Point3(1, 10, -0.9))

        self.LevelCP = self.dummy.attachNewNode(CollisionNode('cnodeLevel'))
        self.LevelCP.node().addSolid(plane1)
        self.LevelCP.node().addSolid(plane2)
        self.LevelCP.node().addSolid(plane3)

        self.LevelCP.show()
        self.LevelCP.node().setIntoCollideMask(BitMask32.bit(2))

        self.Handlernya = CollisionHandlerQueue()
        # self.HandlerCS = CollisionHandlerEvent()
        # self.HandlerCS.addInPattern('into-g')
        traverser.addCollider(self.HeroC, self.Handlernya)
        # traverser.addCollider(self.HeroCS,self.HandlerCS)
        traverser.traverse(render)
コード例 #18
0
ファイル: game.py プロジェクト: elbixos/panda3D
    def setupCollisions(self):
        self.collTrav = CollisionTraverser()

        # rapid collisions detected using below plus FLUID pos
        self.collTrav.setRespectPrevTransform(True)

        self.playerGroundSphere = CollisionSphere(0, 1.5, -1.5, 1.5)
        self.playerGroundCol = CollisionNode('playerSphere')
        self.playerGroundCol.addSolid(self.playerGroundSphere)

        # bitmasks
        self.playerGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.playerGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.world.setGroundMask(BitMask32.bit(0))
        self.world.setWaterMask(BitMask32.bit(0))

        # and done
        self.playerGroundColNp = self.player.attach(self.playerGroundCol)
        self.playerGroundHandler = CollisionHandlerQueue()
        self.collTrav.addCollider(self.playerGroundColNp,
                                  self.playerGroundHandler)

        # DEBUG as per video:
        if (self.debug == True):
            self.playerGroundColNp.show()
            self.collTrav.showCollisions(self.render)
コード例 #19
0
    def __init__(self, fulcrum, terrain):
        TerrainCamera.__init__(self)

        self.terrain = terrain
        self.fulcrum = fulcrum
        # in behind Ralph regardless of ralph's movement.
        self.camNode.reparentTo(fulcrum)
        # How far should the camera be from Ralph
        self.cameraDistance = 30
        # Initialize the pitch of the camera
        self.cameraPitch = 10
        self.focus = self.fulcrum.attachNewNode("focus")

        self.maxDistance = 500.0
        self.minDistance = 2
        self.maxPitch = 80
        self.minPitch = -70

        # We will detect the height of the terrain by creating a collision
        # ray and casting it downward toward the terrain.  One ray will
        # start above ralph's head.
        # A ray may hit the terrain, or it may hit a rock or a tree.  If it
        # hits the terrain, we can detect the height.  If it hits anything
        # else, we rule that the move is illegal.
        self.cTrav = CollisionTraverser()
        self.cameraRay = CollisionSegment(self.fulcrum.getPos(), (0, 5, 5))
        self.cameraCol = CollisionNode('cameraRay')
        self.cameraCol.addSolid(self.cameraRay)
        self.cameraCol.setFromCollideMask(BitMask32.bit(0))
        self.cameraCol.setIntoCollideMask(BitMask32.allOff())
        self.cameraColNp = self.fulcrum.attachNewNode(self.cameraCol)
        self.cameraColHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.cameraColNp, self.cameraColHandler)
コード例 #20
0
ファイル: main.py プロジェクト: AgentSpyname/MightyMountain
 def placeItem(self, item):
     # Add ground collision detector to the health item
     self.collectGroundRay = CollisionRay()
     self.collectGroundRay.setOrigin(0,0,300)
     self.collectGroundRay.setDirection(0,0,-1)
     self.collectGroundCol = CollisionNode('colRay')
     self.collectGroundCol.addSolid(self.collectGroundRay)
     self.collectGroundCol.setFromCollideMask(BitMask32.bit(0))
     self.collectGroundCol.setIntoCollideMask(BitMask32.allOff())
     self.collectGroundColNp = item.attachNewNode(self.collectGroundCol)
     self.collectGroundHandler = CollisionHandlerQueue()
     base.cTrav.addCollider(self.collectGroundColNp, self.collectGroundHandler)
     
     placed = False;
     while placed == False:
         # re-randomize position
         item.setPos(-random.randint(0,140),-random.randint(0,40),0)
         
         base.cTrav.traverse(render)
         
         # Get Z position from terrain collision
         entries = []
         for j in range(self.collectGroundHandler.getNumEntries()):
             entry = self.collectGroundHandler.getEntry(j)
             entries.append(entry)
         entries.sort(lambda x,y: cmp(y.getSurfacePoint(render).getZ(),
                                      x.getSurfacePoint(render).getZ()))
     
         if (len(entries)>0) and (entries[0].getIntoNode().getName() == "terrain"):
             item.setZ(entries[0].getSurfacePoint(render).getZ()+1)
             placed = True
             
     # remove placement collider
     self.collectGroundColNp.removeNode()
コード例 #21
0
ファイル: ItemInWorld.py プロジェクト: czorn/Modifire
 def SetupCollision(self, collisionString):
     radius = 0.2
     collisionGeom = self.itemNode.attachNewNode(CollisionNode('itemCollision'))
     collisionGeom.node().addSolid(CollisionSphere(0, 0, radius/2.0, radius))
     collisionGeom.node().setFromCollideMask(BitMask32.allOff())
     collisionGeom.node().setIntoCollideMask(Globals.ITEM_BITMASK)
     collisionGeom.node().setTag('item', collisionString)
コード例 #22
0
 def setup(self):
   
   # setting up sector entry plane
   self.detection_plane_ = self.attachNewNode(BulletRigidBodyNode(self.getName() + 'entry-plane'))
   
   box_shape =  BulletBoxShape(SECTOR_PLANE_SIZE/2)
   box_shape.setMargin(SECTOR_COLLISION_MARGIN)    
   self.detection_plane_.node().addShape(box_shape)
   self.detection_plane_.node().setMass(0)
   self.detection_plane_.setPos(self,SECTOR_PLANE_POS)
   self.detection_plane_.node().setIntoCollideMask(SECTOR_ENTERED_BITMASK)
   self.physics_world_.attach(self.detection_plane_.node())    
   self.detection_plane_.node().clearBounds()
   self.detection_plane_.reparentTo(self.getParent())
   
   # sector constraint plane
   self.constraint_plane_ = self.attachNewNode(BulletRigidBodyNode(self.getName()+ 'constraint-plane'))
   self.constraint_plane_.node().addShape(BulletPlaneShape(Vec3(0,1,0),0))
   self.constraint_plane_.node().setMass(0)
   self.constraint_plane_.setPos(Vec3.zero())
   self.constraint_plane_.setHpr(Vec3.zero())
   self.constraint_plane_.node().setIntoCollideMask(BitMask32.allOff())
   self.physics_world_.attach(self.constraint_plane_.node())
   self.constraint_plane_.reparentTo(self.getParent())
       
   # setting up objects
   self.setupBoxes()
   self.setupPlatforms()
コード例 #23
0
ファイル: simworldbase.py プロジェクト: alexbw/Simworld
 def setObjectGoal(self, name, flag):
     if flag:
         self.getObject(name).setCollideMask(BitMask32(0x002),
                                                  BitMask32(0x002))
     else:
         self.getObject(name).setCollideMask(BitMask32.allOff(),
                                                  BitMask32(0x002))
コード例 #24
0
ファイル: PandaObject.py プロジェクト: qiaoma/MMOG
	def __init__(self, render, player):
		self.username = player.getUsername()
		self.isMoving = False
		self.render = render

		self.keyMap = {"left":0, "right":0, "forward":0, "cam-left":0, "cam-right":0}

		#self.actor = Actor("models/ralph", {"run":"models/ralph-run", "walk":"models/ralph-walk"})
		self.actor = Actor("models/panda-model",
                                {"walk": "models/panda-walk4"})
		self.actor.reparentTo(render)
		self.actor.setScale(0.002, 0.002, 0.002)
		self.actor.setPos(player.getX(), player.getY(), player.getZ())
		self.actor.setH(player.getH())	
		
		#self.actor.loop("walk")
		
		self.cTrav = CollisionTraverser()
		self.GroundRay = CollisionRay()
		self.GroundRay.setOrigin(0,0,1000)
		self.GroundRay.setDirection(0,0,-1)
		self.GroundCol = CollisionNode('actorRay')
		self.GroundCol.addSolid(self.GroundRay)
		self.GroundCol.setFromCollideMask(BitMask32.bit(0))
		self.GroundCol.setIntoCollideMask(BitMask32.allOff())
		self.GroundColNp = self.actor.attachNewNode(self.GroundCol)
		self.GroundHandler = CollisionHandlerQueue()
		self.cTrav.addCollider(self.GroundColNp, self.GroundHandler)
コード例 #25
0
    def __init__(self, widget, axis):
        NodePath.__init__(self, "transformWidgetAxis")
        self.reparentTo(widget)
        self.widget = widget
        vec = Vec3(0)
        vec[axis] = 1.0
        self.direction = vec
        self.defaultColor = Vec4(vec[0], vec[1], vec[2], 1.0)
        self.rolloverColor = Vec4(vec + 0.5, 1.0)
        self.downColor = Vec4(vec - 0.5, 1.0)
        self.lookAt(vec)
        self.setTransparency(1)

        self.axisIdx = axis

        box = CollisionBox(*self.getClickBox())
        cnode = CollisionNode("pickBox")
        cnode.addSolid(box)
        cnode.setIntoCollideMask(LEGlobals.ManipulatorMask)
        cnode.setFromCollideMask(BitMask32.allOff())
        self.pickNp = self.attachNewNode(cnode)
        self.pickNp.setPythonTag("widgetAxis", self)

        self.state = Ready
        self.setState(Ready)
コード例 #26
0
 def generate(self):
     data = CIGlobals.SuitBodyData[self.SUIT]
     type = data[0]
     team = data[1]
     self.team = team
     self.level = 12
     self.suit = type
     Suit.generate(self, SuitBank.MrHollywood, 0, hideFirst=False)
     self.suit = type
     base.taskMgr.add(self.__viewDistance, self.viewDistanceTaskName)
     self.setPythonTag('guard', self)
     self.eyeLight = Spotlight('eyes')
     self.eyeLens = PerspectiveLens()
     self.eyeLens.setMinFov(90.0 / (4.0 / 3.0))
     self.eyeLight.setLens(self.eyeLens)
     self.eyeNode = self.headModel.attachNewNode(self.eyeLight)
     self.eyeNode.setZ(-5)
     self.eyeNode.setY(-4.5)
     self.trav = CollisionTraverser(self.uniqueName('eyeTrav'))
     ray = CollisionRay(0, 0, 0, 0, 1, 0)
     rayNode = CollisionNode('ToonFPS.rayNode')
     rayNode.addSolid(ray)
     rayNode.setFromCollideMask(CGG.GuardBitmask | CIGlobals.WallBitmask)
     rayNode.setIntoCollideMask(BitMask32.allOff())
     self.rayNP = base.camera.attachNewNode(rayNode)
     self.rayNP.setZ(3)
     self.queue = CollisionHandlerQueue()
     self.trav.addCollider(self.rayNP, self.queue)
     self.trav.addCollider(self.gameWorld.mg.avatarBody, self.queue)
     self.request('Guard')
コード例 #27
0
    def __init__(self, fulcrum, terrain):
        TerrainCamera.__init__(self)

        self.terrain = terrain
        self.fulcrum = fulcrum
        # in behind Ralph regardless of ralph's movement.
        self.camNode.reparentTo(fulcrum)
        # How far should the camera be from Ralph
        self.cameraDistance = 30
        # Initialize the pitch of the camera
        self.cameraPitch = 10
        self.focus = self.fulcrum.attachNewNode("focus")
        
        self.maxDistance = 500.0
        self.minDistance = 2
        self.maxPitch = 80
        self.minPitch = -70
        
        # We will detect the height of the terrain by creating a collision
        # ray and casting it downward toward the terrain.  One ray will
        # start above ralph's head.
        # A ray may hit the terrain, or it may hit a rock or a tree.  If it
        # hits the terrain, we can detect the height.  If it hits anything
        # else, we rule that the move is illegal.
        self.cTrav = CollisionTraverser() 
        self.cameraRay = CollisionSegment(self.fulcrum.getPos(), (0, 5, 5))
        self.cameraCol = CollisionNode('cameraRay')
        self.cameraCol.addSolid(self.cameraRay)
        self.cameraCol.setFromCollideMask(BitMask32.bit(0))
        self.cameraCol.setIntoCollideMask(BitMask32.allOff())
        self.cameraColNp = self.fulcrum.attachNewNode(self.cameraCol)
        self.cameraColHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.cameraColNp, self.cameraColHandler) 
コード例 #28
0
    def getObjectsInBox(self, mins, maxs):
        objects = []

        # Create a one-off collision box, traverser, and queue to test against all MapObjects
        box = CollisionBox(mins, maxs)
        node = CollisionNode("selectToolCollBox")
        node.addSolid(box)
        node.setFromCollideMask(self.Mask)
        node.setIntoCollideMask(BitMask32.allOff())
        boxNp = self.doc.render.attachNewNode(node)
        queue = CollisionHandlerQueue()
        base.clickTraverse(boxNp, queue)
        queue.sortEntries()
        key = self.Key
        entries = queue.getEntries()
        # Select every MapObject our box intersected with
        for entry in entries:
            np = entry.getIntoNodePath().findNetPythonTag(key)
            if not np.isEmpty():
                obj = np.getPythonTag(key)
                actual = self.getActualObject(obj, entry)
                if isinstance(actual, list):
                    for a in actual:
                        if not any(a == x[0] for x in objects):
                            objects.append((a, entry))
                else:
                    objects.append((actual, entry))
        boxNp.removeNode()

        return objects
 def generate(self):
     self.level = 12
     self.maxHealth = 200
     self.health = 200
     Suit.generate(self,
                   FactorySneakGuardSuit.SUIT,
                   FactorySneakGuardSuit.VARIANT,
                   hideFirst=False)
     self.setName(self.suitPlan.getName(), None)
     self.cleanupPropeller()
     base.taskMgr.add(self.__viewDistance, self.viewDistanceTaskName)
     self.setPythonTag('guard', self)
     self.eyeLight = Spotlight('eyes')
     self.eyeLens = PerspectiveLens()
     self.eyeLens.setMinFov(90.0 / (4. / 3.))
     self.eyeLight.setLens(self.eyeLens)
     self.eyeNode = self.headModel.attachNewNode(self.eyeLight)
     self.eyeNode.setZ(-5)
     self.eyeNode.setY(-4.5)
     self.trav = CollisionTraverser(self.uniqueName('eyeTrav'))
     ray = CollisionRay(0, 0, 0, 0, 1, 0)
     rayNode = CollisionNode('ToonFPS.rayNode')
     rayNode.addSolid(ray)
     rayNode.setFromCollideMask(CGG.GuardBitmask | CIGlobals.WallBitmask)
     rayNode.setIntoCollideMask(BitMask32.allOff())
     self.rayNP = base.camera.attachNewNode(rayNode)
     self.rayNP.setZ(3)
     self.queue = CollisionHandlerQueue()
     self.trav.addCollider(self.rayNP, self.queue)
     self.trav.addCollider(self.gameWorld.mg.avatarBody, self.queue)
     self.request('Guard')
コード例 #30
0
ファイル: Block.py プロジェクト: agakax/arkanoid
 def createHitCollider(self, blockId):
     self._hitCollider = self._block.attachNewNode(CollisionNode('blockCNode' + str(blockId)))
     minPos, maxPos = self._block.getTightBounds()
     sizes = (maxPos - minPos)/(2*self.SCALE)
     self._hitCollider.node().addSolid(CollisionBox(LPoint3f(0, 0, 0), sizes.getX(), sizes.getY(), sizes.getZ()))
     self._hitCollider.node().setIntoCollideMask(self.BLOCK_MASK)
     self._hitCollider.node().setFromCollideMask(BitMask32.allOff())
コード例 #31
0
 def createHood(self, loadStorage = 1, AI = 0):
     if loadStorage:
         loadDNAFile(self.dnaStore, "phase_4/dna/storage.dna")
         loadDNAFile(self.dnaStore, "phase_4/dna/storage_TT.dna")
         loadDNAFile(self.dnaStore, "phase_4/dna/storage_TT_sz.dna")
         loadDNAFile(self.dnaStore, "phase_5/dna/storage_town.dna")
         loadDNAFile(self.dnaStore, "phase_5/dna/storage_TT_town.dna")
     self.node = loadDNAFile(self.dnaStore, "phase_4/dna/toontown_central_sz.dna")
     if self.node.getNumParents() == 1:
         self.geom = NodePath(self.node.getParent(0))
         self.geom.reparentTo(hidden)
     else:
         self.geom = hidden.attachNewNode(self.node)
     gsg = base.win.getGsg()
     if gsg:
         self.geom.prepareScene(gsg)
     self.geom.setName('toontown_central')
     
     self.geom.find('**/hill').setTransparency(TransparencyAttrib.MBinary, 1)
     self.createSky("tt")
     base.hoodBGM = base.loadMusic("phase_4/audio/bgm/TC_nbrhood.ogg")
     base.hoodBGM.setVolume(0.25)
     base.hoodBGM.setLoop(True)
     base.hoodBGM.play()
     
     self.clerk_node = render.attach_new_node('clerk_node')
     self.clerk_node.set_pos(-80, -85.57, 0.5)
     self.clerk_node.set_h(165.07)
     
     self.geom.find('**/toontown_central').setCollideMask(BitMask32.allOff())
     self.geom.find('**/coll_sidewalk').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/collision_1').node().setIntoCollideMask(CIGlobals.WallBitmask)
     self.geom.find('**/coll_mainFoolr').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/left_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/right_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_bridge_floor').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_bridge').node().setIntoCollideMask(CIGlobals.WallBitmask)
     self.geom.find('**/coll_r_stair').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_l_stair_2').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_l_stairend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_r_satirend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_plaza').node().setIntoCollideMask(CIGlobals.FloorBitmask)
     self.geom.find('**/coll_hedges').node().setIntoCollideMask(CIGlobals.WallBitmask)
     
     self.coll_list = ['coll_sidewalk', 'collision_1', 'coll_mainFoolr', 'left_ear', 'right_ear', 'coll_bridge_floor', 'coll_bridge', 'coll_r_stair',
                     'coll_l_stair_2', 'coll_l_stairend_1', 'coll_r_stairend_1', 'coll_plaza', 'coll_hedges']
     self.geom.reparentTo(render)
     
     self.telescope = Actor(self.geom.find('**/*animated_prop_HQTelescopeAnimatedProp*'),
                         {"chan": "phase_3.5/models/props/HQ_telescope-chan.bam"}, copy=0)
     self.telescope.reparentTo(self.geom.find('**/*toon_landmark_hqTT*'))
     self.createLights(1, 1, 1)
     
     #if AI:
     #    self.createTrolley()
     
     taskMgr.add(self.telescopeTask, "telescopeTask")
     self.isLoaded = 1
     messenger.send("loadedHood")
コード例 #32
0
ファイル: Paddle.py プロジェクト: agakax/arkanoid
    def createCollider(self):
        self.__ballCollider = self.__paddle.attachNewNode(CollisionNode('paddleBallCNode'))
        minimum, maximum = self.__paddle.getTightBounds()
        center = (maximum - minimum)/2
        center = LPoint3f(center/self.SCALE)
        self.__ballCollider.node().addSolid(CollisionTube(-center[0]*0.85, 0, 0, center[0]*0.85, 0, 0, 1))
        self.__ballCollider.node().setIntoCollideMask(self.PADDLE_MASK)
        self.__ballCollider.node().setFromCollideMask(BitMask32.allOff())

        self.__wallCollider = self.__paddle.attachNewNode(CollisionNode('paddleWallCNode'))
        self.__wallCollider.node().addSolid(CollisionSphere(0, 0, 0, max(center)))
        self.__wallCollider.node().setIntoCollideMask(BitMask32.allOff())
        self.__wallCollider.node().setFromCollideMask(Board.WALL_MASK)

        self.__gameEngine.setColliderHandler(self.__ballCollider)
        self.__gameEngine.setColliderHandler(self.__wallCollider)
        self.__gameEngine.defineIntoCollisionEventHandling('paddleWallCNode', 'boardSideWallsCNode', self.collideEvent)
コード例 #33
0
    def __init__(self):
        # значение шага перемещения клавиатурой
        self.key_step = 0.2
        # значение шага поворота мышкой
        self.mouse_step = 0.2

        # координаты центра экрана
        self.x_center = base.win.getXSize() // 2
        self.y_center = base.win.getYSize() // 2
        # перемещаем указатель мышки в центр экрана
        base.win.movePointer(0, self.x_center, self.y_center)
        # отключаем стандартное управление мышкой
        base.disableMouse()
        # устанавливаем поле зрения объектива
        base.camLens.setFov(80)
        # устанавливаем ближайшую границу отрисовки
        base.camLens.setNear(0.2)

        # устанавливаем текущие значения ориентации камеры
        self.heading = 0
        self.pitch = 0

        # запускаем задачу контроля камеры
        taskMgr.doMethodLater(0.02, self.controlCamera, "camera-task")
        # регистрируем на нажатие клавиши "Esc"
        # событие закрытия приложения
        base.accept("escape", base.userExit)

        # устанавливаем клавиши управления перемещением камеры
        # словарь, хранящий флаги нажатия клавиш
        self.keys = dict()
        # заполняем словарь
        for key in ['a', 'd', 'w', 's', 'q', 'e']:
            # создаём запись в словаре
            self.keys[key] = 0
            # регистрируем событие на нажатие клавиши
            base.accept(key, self.setKey, [key, 1])
            # регистрируем событие на отжатие клавиши
            base.accept(key + '-up', self.setKey, [key, 0])

        # создание обходчика столкновений
        self.traverser = CollisionTraverser()
        # очередь обработки столкновений
        self.collisQueue = CollisionHandlerQueue()
        # узел для сферы столкновений
        self.collisNode = CollisionNode('CameraSphere')
        # устанавливаем маску проверки столкновений ОТ
        self.collisNode.setFromCollideMask(BitMask32.bit(1))
        # сбрасываем маску проверки столкновений ДО
        self.collisNode.setIntoCollideMask(BitMask32.allOff())
        # создайте сферу столкновения
        # ...
        # и прикрепите к созданному ранее узлу self.collisNode
        # ...
        # закрепляем узел на камере
        self.collisCamNode = base.camera.attachNewNode(self.collisNode)
        # уведомляем обходчик о новом «объекте ОТ»
        self.traverser.addCollider(self.collisCamNode, self.collisQueue)
コード例 #34
0
ファイル: Player.py プロジェクト: czorn/Modifire
 def __init__(self):
     self.pNode = render.attachNewNode('playerRoot')     # The root node of the player
     self.eyeHeight = 1.5                                # The z height of the camera
     self.selectedBlock = 0
     self.adjacentBlock = 0
     self.selectedPlayer = None
     self.playerState = PlayerState(self)
     self.inputBuffer = InputBuffer()
     self.currentItem = None
     self.itemModels = {}
     self.playerModel = None
     
     # The bounding box of the player for collision with environment geometry
     self.boundingBoxCenterNode = self.pNode.attachNewNode('bboxCenter')
     self.boundingBoxCenterNode.setPos(0, 0, 0.9)
     self.boundingBox = BoundingBox(self.boundingBoxCenterNode, [0.2, 0.2, 0.9])
     
     self.animFSM = PlayerAnimationFSM(self)
     self.animFSM.request('Idle')
     
     self.camNode = self.pNode.attachNewNode('cam')      # The position of the player's eyes
     self.camNode.setPos(0, 0, self.eyeHeight)
     
     self.playerParent = self.pNode.attachNewNode('playerParent')
     
     # Change this back so items follow player turning
     #self.itemNode = self.playerParent.attachNewNode('3rdPersonItem')
     self.itemNode = self.pNode.attachNewNode('3rdPersonItem')
     self.itemNode.setPos(0, 0, 1.2)
     
     self.camItemNode = self.camNode.attachNewNode('1stPersonItem')
     
     # Node for name text
     self.nameText = None
     self.nameNode = self.pNode.attachNewNode('NameNode')
     self.nameNode.setPos(0, 0, 1.97)
     
     self.lookingRayNode = self.pNode.attachNewNode('lookingRayNode')
     self.lookingRayNode.setPos(0, 0, self.eyeHeight)
     
     lookingSeg = CollisionSegment(0, 0, 0, 0, 100, 0)
     self.lookingRay = self.lookingRayNode.attachNewNode(CollisionNode('lookingRay'))
     self.lookingRay.node().addSolid(lookingSeg)
     self.lookingRay.node().setFromCollideMask(Globals.BLOCK_PICKER_BITMASK | Globals.PLAYER_BITMASK)
     self.lookingRay.node().setIntoCollideMask(BitMask32.allOff())
     
     self.lookingRayCollisionEntry = None
     
     self.pickerCollisionHandler = CollisionHandlerQueue()
     self.pickerTraverser = CollisionTraverser('pickerTraverser')
     self.pickerTraverser.addCollider(self.lookingRay, self.pickerCollisionHandler)
     if(not Settings.IS_SERVER):
         self.selectionGeom = SelectionGeom()
     else:
         self.selectionGeom = None
     
     self.CreateCollisionGeoms()
     self.LoadModels()
コード例 #35
0
    def setupCollision(self):
        self.sphere = self.model.attachNewNode(CollisionNode('range'))
        self.sphere.node().addSolid(CollisionSphere(0, 0, 0, self.range))
        self.sphere.node().setFromCollideMask(BitMask32(2))
        self.sphere.node().setIntoCollideMask(BitMask32.allOff())

        self.cTrav = CollisionTraverser()
        self.cHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.sphere, self.cHandler)
コード例 #36
0
 def initCollisionRay(self, originZ, dirZ):
     ray = CollisionRay(0,0,originZ,0,0,dirZ)
     collNode = CollisionNode('playerRay')
     collNode.addSolid(ray)
     collNode.setFromCollideMask(BitMask32.bit(1))
     collNode.setIntoCollideMask(BitMask32.allOff())
     collRayNP = self.playerNode.attachNewNode(collNode)
     collRayNP.show()
     return collRayNP
コード例 #37
0
 def setupCollision(self):
     self.sphere = self.model.attachNewNode( CollisionNode('range') )
     self.sphere.node().addSolid( CollisionSphere(0, 0, 0, self.range) )
     self.sphere.node().setFromCollideMask( BitMask32(2) )
     self.sphere.node().setIntoCollideMask(BitMask32.allOff())
     
     self.cTrav = CollisionTraverser()
     self.cHandler = CollisionHandlerQueue()
     self.cTrav.addCollider(self.sphere, self.cHandler)
コード例 #38
0
ファイル: PhysicsInternal.py プロジェクト: grimfang/pyweek21
    def startPhysics(self):
        #self.actorNode = ActorNode("playerPhysicsControler")
        #base.physicsMgr.attachPhysicalNode(self.actorNode)
        #self.actorNode.getPhysicsObject().setMass(self.player_mass)
        #self.mainNode = render.attachNewNode(self.actorNode)
        self.mainNode = render.attachNewNode("CharacterColliders")
        self.reparentTo(self.mainNode)

        charCollisions = self.mainNode.attachNewNode(CollisionNode(self.char_collision_name))
        #charCollisions.node().addSolid(CollisionSphere(0, 0, self.player_height/4.0, self.player_height/4.0))
        #charCollisions.node().addSolid(CollisionSphere(0, 0, self.player_height/4.0*3.05, self.player_height/4.0))
        charCollisions.node().addSolid(CollisionSphere(0, 0, self.player_height/2.0, self.player_height/4.0))
        charCollisions.node().setIntoCollideMask(BitMask32(0x80))  # 1000 0000
        if self.show_collisions:
            charCollisions.show()
        self.pusher.addCollider(charCollisions, self.mainNode)
        base.cTrav.addCollider(charCollisions, self.pusher)

        charFFootCollisions = self.attachNewNode(CollisionNode("floor_ray"))
        charFFootCollisions.node().addSolid(CollisionRay(0, 0, 0.5, 0, 0, -1))
        #charFFootCollisions.node().addSolid(CollisionSegment((0, 0, 0.2), (0, 0, -1)))
        charFFootCollisions.node().setIntoCollideMask(BitMask32.allOff())
        charFFootCollisions.node().setFromCollideMask(BitMask32(0x7f))  # 0111 1111
        if self.show_collisions:
            charFFootCollisions.show()

        self.floor_handler = CollisionHandlerFloor()
        self.floor_handler.addCollider(charFFootCollisions, self.mainNode)
        #self.floor_handler.setOffset(0)
        self.floor_handler.setMaxVelocity(5)
        base.cTrav.addCollider(charFFootCollisions, self.floor_handler)

        self.accept("{}-in".format(self.char_collision_name), self.checkCharCollisions)

        self.raytest_segment = CollisionSegment(0, 1)
        self.raytest_np = render.attachNewNode(CollisionNode("testRay"))
        self.raytest_np.node().addSolid(self.raytest_segment)
        self.raytest_np.node().setIntoCollideMask(BitMask32.allOff())
        self.raytest_np.node().setFromCollideMask(BitMask32(0x7f))  # 0111 1111
        if self.show_collisions:
            self.raytest_np.show()

        self.raytest_queue = CollisionHandlerQueue()
        self.rayCTrav.addCollider(self.raytest_np, self.raytest_queue)
コード例 #39
0
    def __init__(self):
        try:
            self.__initialized
            return
        except:
            self.__initialized = 1

        NodePath.__init__(self, hidden.attachNewNode('PositionExaminer'))
        self.cRay = CollisionRay(0.0, 0.0, 6.0, 0.0, 0.0, -1.0)
        self.cRayNode = CollisionNode('cRayNode')
        self.cRayNode.addSolid(self.cRay)
        self.cRayNodePath = self.attachNewNode(self.cRayNode)
        self.cRayNodePath.hide()
        self.cRayBitMask = CIGlobals.FloorBitmask
        self.cRayNode.setFromCollideMask(self.cRayBitMask)
        self.cRayNode.setIntoCollideMask(BitMask32.allOff())
        self.cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.5)
        self.cSphereNode = CollisionNode('cSphereNode')
        self.cSphereNode.addSolid(self.cSphere)
        self.cSphereNodePath = self.attachNewNode(self.cSphereNode)
        self.cSphereNodePath.hide()
        self.cSphereBitMask = CIGlobals.WallBitmask
        self.cSphereNode.setFromCollideMask(self.cSphereBitMask)
        self.cSphereNode.setIntoCollideMask(BitMask32.allOff())
        self.ccLine = CollisionSegment(0.0, 0.0, 0.0, 1.0, 0.0, 0.0)
        self.ccLineNode = CollisionNode('ccLineNode')
        self.ccLineNode.addSolid(self.ccLine)
        self.ccLineNodePath = self.attachNewNode(self.ccLineNode)
        self.ccLineNodePath.hide()
        self.ccLineBitMask = CIGlobals.CameraBitmask
        self.ccLineNode.setFromCollideMask(self.ccLineBitMask)
        self.ccLineNode.setIntoCollideMask(BitMask32.allOff())
        self.cRayTrav = CollisionTraverser('PositionExaminer.cRayTrav')
        self.cRayTrav.setRespectPrevTransform(False)
        self.cRayQueue = CollisionHandlerQueue()
        self.cRayTrav.addCollider(self.cRayNodePath, self.cRayQueue)
        self.cSphereTrav = CollisionTraverser('PositionExaminer.cSphereTrav')
        self.cSphereTrav.setRespectPrevTransform(False)
        self.cSphereQueue = CollisionHandlerQueue()
        self.cSphereTrav.addCollider(self.cSphereNodePath, self.cSphereQueue)
        self.ccLineTrav = CollisionTraverser('PositionExaminer.ccLineTrav')
        self.ccLineTrav.setRespectPrevTransform(False)
        self.ccLineQueue = CollisionHandlerQueue()
        self.ccLineTrav.addCollider(self.ccLineNodePath, self.ccLineQueue)
コード例 #40
0
ファイル: Main.py プロジェクト: PlumpMath/Testblock-Panda3D
    def collisionInit(self):
        # Kollisionserkennung, um auf dem Boden zu laufen. Der Collisionray
        # erkennt die Hoehe des Gelaendes und wenn ein Objekt da ist, wird
        # die Bewegung als illegal gewertet.

        self.cTrav = CollisionTraverser()

        self.spielerGroundRay = CollisionRay()
        self.spielerGroundRay.setOrigin(0, 0, 1000)
        self.spielerGroundRay.setDirection(0, 0, -1)
        self.spielerGroundCol = CollisionNode('spielerRay')
        self.spielerGroundCol.addSolid(self.spielerGroundRay)
        self.spielerGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.spielerGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.spielerGroundColNp = self.spieler.actor.attachNewNode(
            self.spielerGroundCol)
        self.spielerGroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.spielerGroundColNp,
                               self.spielerGroundHandler)

        self.camGroundRay = CollisionRay()
        self.camGroundRay.setOrigin(0, 0, 1000)
        self.camGroundRay.setDirection(0, 0, -1)
        self.camGroundCol = CollisionNode('camRay')
        self.camGroundCol.addSolid(self.camGroundRay)
        self.camGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.camGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.camGroundColNp = base.camera.attachNewNode(self.camGroundCol)
        self.camGroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.camGroundColNp, self.camGroundHandler)

        self.gegnerGroundRay = CollisionRay()
        self.gegnerGroundRay.setOrigin(0, 0, 1000)
        self.gegnerGroundRay.setDirection(0, 0, -1)
        self.gegnerGroundCol = CollisionNode('gegnerRay')
        self.gegnerGroundCol.addSolid(self.gegnerGroundRay)
        self.gegnerGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.gegnerGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.gegnerGroundColNp = self.gegner.actor.attachNewNode(
            self.gegnerGroundCol)
        self.gegnerGroundHandler = CollisionHandlerQueue()
        self.cTrav.addCollider(self.gegnerGroundColNp,
                               self.gegnerGroundHandler)
コード例 #41
0
    def __init__(self):
        print("TerrainTest object created")
        self.make_traverser_handler()
        self.tm = TerrainManager(16, 16)

        self.down = 0

        self.PCs = {}

        #self.make_actor()
        self.char = Character("pandabuddy")
        self.pc = self.char.panda_actor
        self.make_actor_collisions(self.pc)
        #self.make_test_capsule()
        self.tm.get_terrain(0, 0).terrain.getRoot().setTag('myObjectTag', '1')

        #self.tm.get_terrain(0, 0).terrain.getRoot().setIntoCollideMask(BitMask32.bit(0))
        #col_t = CollisionNode("col_t")
        #col_t.addSolid(CollisionPolygon(self.tm.get_terrain(0, 0).terrain.getRoot()))
        #CollisionPolygon(self.tm.get_terrain(0, 0).terrain.getRoot())
        #base.cTrav.addCollider(self.tm.get_terrain(0, 0).terrain.getRoot(), base.mchandler)

        #pusher = CollisionHandlerPusher()
        #pusher.addCollider(self.collision_node, self.char.boxc)
        #base.cTrav.addCollider(self.collision_node, pusher)

        #base.cTrav.addCollider(self.collision_node, base.mchandler)

        cp = CollisionPlane(LPlane((0, 0, 1), (0, 0, 0)))
        #self.planeANP = render.attachNewNode(ActorNode('p actor'))
        planeNP = base.render.attachNewNode(CollisionNode('planecnode'))
        #planeNP = self.planeANP.attachNewNode(CollisionNode('planecnode'))
        self.accept('into-planecnode', self.hanev)
        self.accept('pcol-again-planecnode', self.hanev)
        planeNP.node().addSolid(cp)
        planeNP.show()
        planeNP.setScale(100, 100, 100)
        planeNP.node().setIntoCollideMask(BitMask32.bit(0))
        planeNP.node().setFromCollideMask(BitMask32.allOff())
        planeNP.setPos(0, 0, -100)
        #base.mchandler.addCollider(planeNP, self.planeANP)
        #base.cTrav.addCollider(planeNP, base.mchandler)
        #base.physicsMgr.attachPhysicalNode(self.planeANP.node())

        base.cTrav.addCollider(self.char.boxc, base.mchandler)
        base.cTrav.setRespectPrevTransform(True)

        #base.mchandler.addCollider(self.collision_node, self.char.panda_actor)
        #base.mchandler.addCollider(self.collision_node, self.char.boxc)
        #base.mchandler.addCollider(self.char.boxc, self.collision_node)
        Globals.g_task_manager.add(self.move, "moveTask", priority=-100)
        self.task1 = Task(self.gravity)
        Globals.g_task_manager.add(self.task1,
                                   "gravityTask",
                                   extraArgs=[self.task1, self.pc])
コード例 #42
0
ファイル: level.py プロジェクト: court-jus/Gate_OpenPortal
 def __init__(self, model = "cube_nocol", texture = "lava", pos = (0,0,0), scale = (1,1,1), cubetype = "A"):
     super(LavaCube, self).__init__(model, texture, pos, scale)
     cn = CollisionNode('lava')
     cn.setFromCollideMask(COLLISIONMASKS['lava'])
     cn.setIntoCollideMask(BitMask32.allOff())
     np = self.node.attachNewNode(cn)
     cn.addSolid(CollisionSphere(0,0,0,1.1))
     h = CollisionHandlerEvent()
     h.addInPattern('%fn-into-%in')
     h.addOutPattern('%fn-outof-%in')
     base.cTrav.addCollider(np, h)
コード例 #43
0
ファイル: player.py プロジェクト: court-jus/Gate_OpenPortal
 def createPortalCollisions(self):
     # Enter the portals
     cn = CollisionNode('bluePortal')
     cn.setFromCollideMask(COLLISIONMASKS['portals'])
     cn.setIntoCollideMask(BitMask32.allOff())
     np = self.bluePortal.attachNewNode(cn)
     cn.addSolid(CollisionSphere(0,0,0,2))
     h = CollisionHandlerEvent()
     h.addInPattern('%fn-into-%in')
     h.addOutPattern('%fn-outof-%in')
     self.base.cTrav.addCollider(np, h)
     cn = CollisionNode('orangePortal')
     cn.setFromCollideMask(COLLISIONMASKS['portals'])
     cn.setIntoCollideMask(BitMask32.allOff())
     np = self.orangePortal.attachNewNode(cn)
     cn.addSolid(CollisionSphere(0,0,0,2))
     h = CollisionHandlerEvent()
     h.addInPattern('%fn-into-%in')
     h.addOutPattern('%fn-outof-%in')
     self.base.cTrav.addCollider(np, h)
コード例 #44
0
ファイル: main.py プロジェクト: myatnoe/Timed-Obstacle-Game
 def addCollisionOnMainChar(self):
     self.mainCharGroundRay = CollisionRay()
     self.mainCharGroundRay.setOrigin(0,0,1000)
     self.mainCharGroundRay.setDirection(0,0,-1)
     self.mainCharGroundCol = CollisionNode('mainChar')
     self.mainCharGroundCol.addSolid(self.mainCharGroundRay)
     self.mainCharGroundCol.setFromCollideMask(BitMask32.bit(0))
     self.mainCharGroundCol.setIntoCollideMask(BitMask32.allOff())
     self.mainCharGroundColNp = self.mainChar.attachNewNode(self.mainCharGroundCol)
     self.mainCharGroundHandler = CollisionHandlerQueue()
     self.cTrav.addCollider(self.mainCharGroundColNp, self.mainCharGroundHandler)
コード例 #45
0
 def getFlyBallBubble(self):
     if self.__flyBallBubble == None:
         bubble = CollisionSphere(0, 0, 0, GolfGlobals.GOLF_BALL_RADIUS)
         node = CollisionNode('flyBallBubble')
         node.addSolid(bubble)
         node.setFromCollideMask(ToontownGlobals.PieBitmask | ToontownGlobals.CameraBitmask | ToontownGlobals.FloorBitmask)
         node.setIntoCollideMask(BitMask32.allOff())
         self.__flyBallBubble = NodePath(node)
         self.flyBallHandler = CollisionHandlerEvent()
         self.flyBallHandler.addInPattern('flyBallHit-%d' % self.index)
     return self.__flyBallBubble
コード例 #46
0
ファイル: main.py プロジェクト: myatnoe/Timed-Obstacle-Game
 def addCollisionOnCam(self):
     self.camGroundRay = CollisionRay()
     self.camGroundRay.setOrigin(0,0,1000)
     self.camGroundRay.setDirection(0,0,-1)
     self.camGroundCol = CollisionNode('camRay')
     self.camGroundCol.addSolid(self.camGroundRay)
     self.camGroundCol.setFromCollideMask(BitMask32.bit(0))
     self.camGroundCol.setIntoCollideMask(BitMask32.allOff())
     self.camGroundColNp = base.camera.attachNewNode(self.camGroundCol)
     self.camGroundHandler = CollisionHandlerQueue()
     self.cTrav.addCollider(self.camGroundColNp, self.camGroundHandler)
コード例 #47
0
ファイル: DistributedGolfSpot.py プロジェクト: nate97/src
 def getFlyBallBubble(self):
     if self.__flyBallBubble == None:
         bubble = CollisionSphere(0, 0, 0, GolfGlobals.GOLF_BALL_RADIUS)
         node = CollisionNode('flyBallBubble')
         node.addSolid(bubble)
         node.setFromCollideMask(ToontownGlobals.PieBitmask | ToontownGlobals.CameraBitmask | ToontownGlobals.FloorBitmask)
         node.setIntoCollideMask(BitMask32.allOff())
         self.__flyBallBubble = NodePath(node)
         self.flyBallHandler = CollisionHandlerEvent()
         self.flyBallHandler.addInPattern('flyBallHit-%d' % self.index)
     return self.__flyBallBubble
コード例 #48
0
	def __init__(self, name):
		self.name = name
		self.cell_x = 0
		self.cell_y = 0
		self.vel = LPoint3(0, 0, 0)

		self.c_node = base.render.attachNewNode(
			self.name+"_camera_node")


		self.panda_actor = Actor("models/panda-model", {"walk": "models/panda-walk4"})
		self.panda_actor.setScale(0.05, 0.05, 0.05)

		self.p_node = NodePath(self.name+"_phys_node")
		self.p_node.reparentTo(render)

		self.an = ActorNode("panda-phys")
		self.anp = self.p_node.attachNewNode(self.an)
		base.enableParticles()
		base.physicsMgr.attachPhysicalNode(self.an)
		self.panda_actor.reparentTo(self.anp)

		gravityFN=ForceNode('world-forces')
		gravityFNP=render.attachNewNode(gravityFN)
		#gravityForce=LinearVectorForce(0,0,-9.81) #gravity acceleration
		self.gravityForce=LinearVectorForce(0,0,-9.81)
		gravityFN.addForce(self.gravityForce)

		base.physicsMgr.addLinearForce(self.gravityForce)


		self.c_node.reparentTo(self.panda_actor)
		self.c_node.setCompass()
		#self.panda_actor.reparentTo(base.render)
		base.camera.reparentTo(self.c_node)

		self.box = loader.loadModel("box.egg")
		self.box.setScale(100, 100, 100)
		self.box.setPos(-180, 0, 0)
		self.boxc = self.box.find("**/Cube")
		self.boxc.node().setIntoCollideMask(BitMask32.bit(0))
		self.boxc.node().setFromCollideMask(BitMask32.allOff())

		self.ban = ActorNode("box-phys")
		base.physicsMgr.attachPhysicalNode(self.ban)

		self.bp_node = NodePath(self.name+"_phys_node2")
		self.bp_node.reparentTo(render)

		self.banp = self.bp_node.attachNewNode(self.ban)
		self.box.reparentTo(self.banp)

		self.boxc.show()
コード例 #49
0
ファイル: player.py プロジェクト: court-jus/Gate_OpenPortal
 def createMouseCollisions(self):
     # Fire the portals
     firingNode = CollisionNode('mouseRay')
     firingNP = self.base.camera.attachNewNode(firingNode)
     firingNode.setFromCollideMask(COLLISIONMASKS['geometry'])
     firingNode.setIntoCollideMask(BitMask32.allOff())
     firingRay = CollisionRay()
     firingRay.setOrigin(0,0,0)
     firingRay.setDirection(0,1,0)
     firingNode.addSolid(firingRay)
     self.firingHandler = CollisionHandlerQueue()
     self.base.cTrav.addCollider(firingNP, self.firingHandler)
コード例 #50
0
ファイル: main.py プロジェクト: zking773/ArchiveHighSchool
    def genSuccession(self, axis, distance, direction=None):

        axis_index = (self.axis_index_dic[axis])
        col_index = (self.axis_index_dic[axis] + 1) % len(self.axis_index_dic)
        row_index = (self.axis_index_dic[axis] + 2) % len(self.axis_index_dic)

        ast_location = []

        for ast_column in range(
                self.field_expanse[col_index][0],
                self.field_expanse[col_index][1] +
                self.succession_interval[col_index],
                self.succession_interval[col_index]):

            for ast_row in range(
                    self.field_expanse[row_index][0],
                    self.field_expanse[row_index][1] +
                    self.succession_interval[row_index],
                    self.succession_interval[row_index]):

                ast_location = [0, 0, 0]

                ast_location[axis_index] = distance
                ast_location[col_index] = ast_column
                ast_location[row_index] = ast_row

                model_ref = choice(Asteroid.ASTEROID_MODELS)
                asteroid = Asteroid(loader.loadModel(model_ref.modelPath),
                                    ast_location, self.deviation_factor, 1, .1)

                bound = asteroid.objectNP.getBounds()
                bound_center = bound.getCenter()
                bound_radius = bound.getRadius()

                asteroidSphere = CollisionSphere(
                    bound_center[0] - asteroid.objectNP.getX(),
                    bound_center[1] - asteroid.objectNP.getY(),
                    bound_center[2] - asteroid.objectNP.getZ(),
                    bound_radius * model_ref.radialScale)

                asteroidSphereNode = CollisionNode(Asteroid.COLLISION_NAME)
                asteroidSphereNode.addSolid(asteroidSphere)

                asteroidSphereNode.setFromCollideMask(BitMask32.allOff())
                asteroidSphereNode.setIntoCollideMask(BitMask32.bit(0))

                pandaBodySphereNodepath = asteroid.objectNP.attachNewNode(
                    asteroidSphereNode)

                asteroid.orient()

                self.asteroids.append(asteroid)
コード例 #51
0
    def addCollisionSphere(self, radius):
        """Create a collision sphere and adds it to the node's tree.
        
        The sphere is centered at the center of the object.
        """
        center = self.getBounds().getCenter()
        collisionSphere = CollisionSphere(center, radius)
        collisionNode = CollisionNode(self.name + '_collision_node')
        collisionNode.addSolid(collisionSphere)

        self.collider = self.actor.attachNewNode(collisionNode)
        
        self.model.setCollideMask(BitMask32.allOff())
コード例 #52
0
 def setupFloorEventSphere(self, avatarNodePath, bitmask, avatarRadius):
     cSphere = CollisionSphere(0.0, 0.0, 0.0, 0.75)
     cSphereNode = CollisionNode('Flyer.cFloorEventSphere')
     cSphereNode.addSolid(cSphere)
     cSphereNodePath = avatarNodePath.attachNewNode(cSphereNode)
     cSphereNode.setFromCollideMask(bitmask)
     cSphereNode.setIntoCollideMask(BitMask32.allOff())
     self.floorCollisionEvent = CollisionHandlerEvent()
     self.floorCollisionEvent.addInPattern('%fn-enter-%in')
     self.floorCollisionEvent.addAgainPattern('%fn-again-%in')
     self.floorCollisionEvent.addOutPattern('%fn-exit-%in')
     base.cTrav.addCollider(cSphereNodePath, self.floorCollisionEvent)
     self.cFloorEventSphereNodePath = cSphereNodePath
コード例 #53
0
ファイル: picker.py プロジェクト: PlumpMath/redpanda
    def create(self):
        self.mPickerTraverser = CollisionTraverser()
        self.mCollisionQue = CollisionHandlerQueue()

        self.mPickRay = CollisionRay()
        self.mPickRay.setOrigin(base.camera.getPos(base.render))
        self.mPickRay.setDirection(
            base.render.getRelativeVector(base.camera, Vec3(0, 1, 0)))

        #create our collison Node to hold the ray
        self.mPickNode = CollisionNode(self.nodeName)
        self.mPickNode.addSolid(self.mPickRay)

        #Attach that node to the camera since the ray will need to be positioned
        #relative to it, returns a new nodepath
        #well use the default geometry mask
        #this is inefficent but its for mouse picking only

        self.mPickNP = base.camera.attachNewNode(self.mPickNode)

        #we'll use what panda calls the "from" node.  This is reall a silly convention
        #but from nodes are nodes that are active, while into nodes are usually passive environments
        #this isnt a hard rule, but following it usually reduces processing

        #Everything to be picked will use bit 1. This way if we were doing other
        #collision we could seperate it, we use bitmasks to determine what we check other objects against
        #if they dont have a bitmask for bit 1 well skip them!
        self.mPickNode.setFromCollideMask(BitMask32(1))

        #Register the ray as something that can cause collisions
        self.mPickerTraverser.addCollider(self.mPickNP, self.mCollisionQue)

        #Setup 2D picker
        self.mPickerTraverser2D = CollisionTraverser()
        self.mCollisionQue2D = CollisionHandlerQueue()

        self.mPickNode2D = CollisionNode('2D PickNode')
        self.mPickNode2D.setFromCollideMask(BitMask32(1))
        self.mPickNode2D.setIntoCollideMask(BitMask32.allOff())

        self.mPick2DNP = base.camera2d.attachNewNode(self.mPickNode2D)

        self.mPickRay2D = CollisionRay()
        self.mPickNode2D.addSolid(self.mPickRay2D)

        self.mPickerTraverser2D.addCollider(self.mPick2DNP,
                                            self.mCollisionQue2D)

        if self.showCollisions:
            self.mPickerTraverser.showCollisions(base.render)
            self.mPickerTraverser2D.showCollisions(base.aspect2d)
コード例 #54
0
ファイル: terrain.py プロジェクト: PlumpMath/OWP_Miner
    def __init__(self, _heightField):

    	texture = loader.loadTexture("ground_tex.png")
        self.zScale = 45

        self.terrain = GeoMipTerrain("BasicTerrain")
        self.terrain.setHeightfield(_heightField)

        # Dynamic settings?
        self.terrain.setBlockSize(16)
        self.terrain.setNear(20)
        self.terrain.setFar(100)
        self.terrain.setFocalPoint(base.camera)

        # Settings
        self.terrain.getRoot().setSz(self.zScale)
        self.terrain.getRoot().setTexture(texture)
        self.terrain.getRoot().reparentTo(render)
        self.terrain.generate()

        self.terrainSize = (self.terrain.heightfield().getReadXSize(), self.terrain.heightfield().getReadYSize())
        print "Terrain Size:", self.terrainSize
        taskMgr.add(self.terrainTask, "TerrainTask")

        self.skydome = loader.loadModel("Skydome")
        self.skydome.setDepthTest(False)
        self.skydome.setAttrib(CullBinAttrib.make("skydomeBin", 1000))
        self.skydome.reparentTo(camera)
        self.skydome.setScale(2)
        self.skydome.setPos(0, 0, -0.5)
        self.skydome.setCollideMask(BitMask32.allOff())
        taskMgr.add(self.skydomeTask, "paperplanet_skydome")

        # Add some fancy fog
        self.fog = Fog("Fog Name")
        self.fog.setColor(0.4,0.2,0.3)
        self.fog.setExpDensity(0.015)
        render.setFog(self.fog)

        # Some Test light
        dlight = DirectionalLight("dlight")
        dlight.setColor(VBase4(0.8, 0.8, 0.5, 1))
        dlnp = render.attachNewNode(dlight)
        dlnp.setHpr(0, -60, 0)
        render.setLight(dlnp)


        # Add basic blacksmith hut
        tmp = loader.loadModel("blacksmith_hut")
        tmp.reparentTo(render)
        tmp.setPos(164.054, 340.92, 11.3384)
コード例 #55
0
ファイル: usuario.py プロジェクト: PlumpMath/vinerx
    def __setup_collision(self):
        #Colisao
        self.ralphGroundRay = CollisionRay()
        self.ralphGroundRay.setOrigin(0, 0, 5)
        self.ralphGroundRay.setDirection(0, 0, -1)
        self.ralphGroundCol = CollisionNode('ralphRay')
        self.ralphGroundCol.addSolid(self.ralphGroundRay)
        self.ralphGroundCol.setFromCollideMask(BitMask32.bit(0))
        self.ralphGroundCol.setIntoCollideMask(BitMask32.allOff())
        self.ralphGroundColNp = self.__modelo.attachNewNode(
            self.ralphGroundCol)
        self.ralphGroundHandler = CollisionHandlerQueue()

        base.cTrav.addCollider(self.ralphGroundColNp, self.ralphGroundHandler)
コード例 #56
0
 def setupHeadSphere(self, avatarNodePath):
     collSphere = CollisionSphere(0, 0, 0, 1)
     collSphere.setTangible(1)
     collNode = CollisionNode('Flyer.cHeadCollSphere')
     collNode.setFromCollideMask(ToontownGlobals.CeilingBitmask)
     collNode.setIntoCollideMask(BitMask32.allOff())
     collNode.addSolid(collSphere)
     self.cHeadSphereNodePath = avatarNodePath.attachNewNode(collNode)
     self.cHeadSphereNodePath.setZ(base.localAvatar.getHeight() + 1.0)
     self.headCollisionEvent = CollisionHandlerEvent()
     self.headCollisionEvent.addInPattern('%fn-enter-%in')
     self.headCollisionEvent.addOutPattern('%fn-exit-%in')
     base.cTrav.addCollider(self.cHeadSphereNodePath,
                            self.headCollisionEvent)
コード例 #57
0
 def setupEventSphere(self, bitmask, avatarRadius):
     self.avatarRadius = avatarRadius
     cSphere = CollisionSphere(0.0, 0.0, self.avatarRadius + 0.75,
                               self.avatarRadius * 1.04)
     cSphere.setTangible(0)
     cSphereNode = CollisionNode('Flyer.cEventSphereNode')
     cSphereNode.addSolid(cSphere)
     cSphereNodePath = self.avatarNodePath.attachNewNode(cSphereNode)
     cSphereNode.setFromCollideMask(bitmask)
     cSphereNode.setIntoCollideMask(BitMask32.allOff())
     self.event = CollisionHandlerEvent()
     self.event.addInPattern('enter%in')
     self.event.addOutPattern('exit%in')
     self.cEventSphereNodePath = cSphereNodePath
コード例 #58
0
 def setup_shadow_ray(self, shadow_node, mat):
     ray = CollisionRay(0.0, 0.0, CollisionHandlerRayStart, 0.0, 0.0, -1.0)
     ray_node = CollisionNode('ray_node')
     ray_node.add_solid(ray)
     self.ray_np = shadow_node.attach_new_node(ray_node)
     self.ray_np.node().set_from_collide_mask(CIGlobals.FloorBitmask)
     self.ray_np.node().set_into_collide_mask(BitMask32.allOff())
     floor_offset = 0.025
     lifter = CollisionHandlerFloor()
     lifter.set_offset(floor_offset)
     lifter.set_reach(4.0)
     lifter.add_collider(self.ray_np, shadow_node)
     if not mat:
         base.cTrav.add_collider(self.ray_np, lifter)
コード例 #59
0
 def setupCaptureSphere(self, parent):
     if not self.newEventSphereNodePath:
         newEventSphere = CollisionSphere(1447, -2363, 0, 1300)
         newEventSphere.setTangible(0)
         newEventSphereName = self.uniqueName('shipCapture')
         newEventSphereNode = CollisionNode(newEventSphereName)
         newEventSphereNode.setFromCollideMask(BitMask32.allOff())
         newEventSphereNode.setIntoCollideMask(
             PiratesGlobals.ShipCollideBitmask)
         newEventSphereNode.addSolid(newEventSphere)
         self.newEventSphereName = newEventSphereName
         self.newEventSphereNodePath = parent.attachNewNode(
             newEventSphereNode)
         self.acceptOnce('enter' + newEventSphereName,
                         self.handleShipCapture)
コード例 #60
0
 def setupWallSphere(self, bitmask, avatarRadius):
     self.avatarRadius = avatarRadius
     cSphere = CollisionSphere(0.0, 0.0, self.avatarRadius + 0.75,
                               self.avatarRadius)
     cSphereNode = CollisionNode('Flyer.cWallSphereNode')
     cSphereNode.addSolid(cSphere)
     cSphereNodePath = self.avatarNodePath.attachNewNode(cSphereNode)
     cSphereNode.setFromCollideMask(bitmask)
     cSphereNode.setIntoCollideMask(BitMask32.allOff())
     if config.GetBool('want-fluid-pusher', 0):
         self.pusher = CollisionHandlerFluidPusher()
     else:
         self.pusher = CollisionHandlerPusher()
     self.pusher.addCollider(cSphereNodePath, self.avatarNodePath)
     self.cWallSphereNodePath = cSphereNodePath