Ejemplo n.º 1
0
class CollisionZoom:
    collision: CollisionNode = field(
        default_factory=lambda: CollisionNode("cam collisions"))
    traverser: CollisionTraverser = field(
        default_factory=lambda: CollisionTraverser("cam traverser"))
    queue: CollisionHandlerQueue = field(
        default_factory=lambda: CollisionHandlerQueue())
    body_width: float = 0.5
Ejemplo n.º 2
0
    def levelInit(self, levelname):
        # Load a backdrop model and attach it to the Scene Graph
        self.environment = loader.loadModel(levelname)
        self.environment.reparentTo(render)

        # Set up level collision
        self.cTrav = CollisionTraverser()
        self.pusher = CollisionHandlerPusher()
Ejemplo n.º 3
0
 def setup(self):
     self._old_cTrav = base.cTrav
     base.cTrav = CollisionTraverser()
     base.cTrav.setRespectPrevTransform(True)
     if self._debug:
         base.cTrav.showCollisions(base.gameState.currentState.objectsNode)
     
     self.addCollider(base.gameState.currentState.objects['equismo'])
Ejemplo n.º 4
0
 def __init__(self):
     super().__init__(name='raycaster', eternal=True)
     self._picker = CollisionTraverser()  # Make a traverser
     self._pq = CollisionHandlerQueue()  # Make a handler
     self._pickerNode = CollisionNode('raycaster')
     self._pickerNode.set_into_collide_mask(0)
     self._pickerNP = self.attach_new_node(self._pickerNode)
     self._picker.addCollider(self._pickerNP, self._pq)
Ejemplo n.º 5
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)
Ejemplo n.º 6
0
    def __init__(self):
        ShowBase.__init__(self)

        # Override defaults
        self.disableMouse()
        self.setBackgroundColor(VBase3(160, 200, 150) / 255.0)
        self.setFrameRateMeter(True)

        # Lights
        dlight = DirectionalLight("dlight")
        dlnp = self.render.attachNewNode(dlight)
        dlnp.setHpr(180.0, -70.0, 0)
        self.render.setLight(dlnp)

        alight = AmbientLight("alight")
        alnp = self.render.attachNewNode(alight)
        alight.setColor(VBase4(0.4, 0.4, 0.4, 1))
        self.render.setLight(alnp)

        # Collision traverser
        self.cTrav = CollisionTraverser("collisionTraverser")
        #self.cTrav.showCollisions(self.render)

        # Collision handlers
        self.carCollisionHandler = CollisionHandlerEvent()
        self.carCollisionHandler.addInPattern("%fn-into-%in")

        # Camera controls
        self.cameraController = CameraController(self, 400, math.pi / 4.0,
                                                 math.pi / 4.0)
        #self.cameraController = CameraController(self, 300, -math.pi, math.pi / 4.0)

        # Load the track
        #self.track = self.loader.loadModel("models/trackMotegi")
        self.track = self.loader.loadModel("models/trackValencia")
        checkpointsCollision = self.track.find("checkpoints").node()
        checkpointsCollision.setIntoCollideMask(BitMask32(0xF0))
        self.numCheckpoints = checkpointsCollision.getNumSolids()
        self.track.reparentTo(self.render)

        # Load the car
        #self.car = KeyboardCar(self)
        self.car = NeuralNetworkCar(self)
        self.cameraController.follow(self.car.getNodePath())
        #self.cameraController.setTarget(self.car.getNodePath())

        # Reposition the car
        #self.car.getNodePath().setH(180.0)

        # Register car collisions with track
        self.cTrav.addCollider(self.car.carCollider, self.carCollisionHandler)
        self.accept("carCollider-into-trackCollision", self.car.onCrash)
        self.accept("carCollider-into-checkpoints", self.car.onCheckpoint)

        # State logger
        self.loggingActive = False
        self.log = []
        self.accept("l", self.toggleStateLogger)
Ejemplo n.º 7
0
 def generateGravity(self, NodePath):
     base.cTrav = CollisionTraverser()
     GravityController = GravityWalker(legacyLifter=True)
     GravityController.setWallBitMask(BitmaskGlobals.WallBitmask)
     GravityController.setFloorBitMask(BitmaskGlobals.FloorBitmask)
     GravityController.initializeCollisions(base.cTrav,
                                            NodePath,
                                            floorOffset=0.025,
                                            reach=4.0)
Ejemplo n.º 8
0
 def __init__(self, app) -> None:
     self.app = app
     # 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, and the other will start above the camera.
     # 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()
Ejemplo n.º 9
0
    def loadGame(self):
        # Setting up key maps and the instruction set into the scene...
        LandwalkerGlobals.setKeys()
        LandwalkerGlobals.setInstructions()

        # Loads our world.
        scene = self.loadWorld()

        # Makes our local avatar.
        localAvatar = actor.makeActor()
        base.localAvatar = localAvatar
        base.localAvatar.reparentTo(render)

        # Load our buttons.
        self.LoadButtons()

        # Load our shaders.
        #fog = loadFog()
        #print(fogStats(fog))
        EffectsManager.loadShaders()
        #FogDensity = EffectsManager.loadFog(1)

        # Floater Object (For camera)
        floater = NodePath(PandaNode("floater"))
        floater.reparentTo(localAvatar)
        floater.setY(-10)
        floater.setZ(8.5)
        floater.setHpr(0, -10, 0)

        # Set Camera
        camera.reparentTo(floater)

        wallBitmask = BitMask32(1)
        floorBitmask = BitMask32(2)
        base.cTrav = CollisionTraverser()

        # Walk controls
        walkControls = GravityWalker(legacyLifter=True)
        walkControls.setWallBitMask(wallBitmask)
        walkControls.setFloorBitMask(floorBitmask)
        walkControls.setWalkSpeed(16.0, 24.0, 8.0, 80.0)
        walkControls.initializeCollisions(base.cTrav,
                                          localAvatar,
                                          floorOffset=0.025,
                                          reach=4.0)
        walkControls.setAirborneHeightFunc(
            LandwalkerAvatarControls.getAirborneHeight())
        walkControls.enableAvatarControls()
        # controlManager.add(walkControls, 'walk')
        localAvatar.physControls = walkControls
        localAvatar.physControls.placeOnFloor()

        # Some debug stuff, should be moved later once I can toggle stuff from different files./
        self.onScreenDebug.enabled = True
        base.setFrameRateMeter(True)
        base.taskMgr.add(LandwalkerAvatarControls.move, "moveTask")
        base.taskMgr.add(self.updateOnScreenDebug, 'UpdateOSD')
Ejemplo n.º 10
0
 def __init__(self, name="auto"):
     self.ctrav = CollisionTraverser()
     self.chan = CollisionHandlerQueue()
     self.np = NodePath(name)
     self.bitmask_list = [BitMask32(2**n) for n in range(31)]
     self._bitmask_ext = BitMask32(
         2**31)  # 31 is prepared for cd with external non-active objects
     self.all_cdelements = [
     ]  # a list of cdlnks or cdobjs for quick accessing the cd elements (cdlnks/cdobjs)
Ejemplo n.º 11
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)
    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)
Ejemplo n.º 13
0
    def __init__(self):
        super().__init__(self)
        self.scene = self.loader.loadModel("./models/world.egg")
        self.scene.reparentTo(self.render)

        base.cTrav = CollisionTraverser()
        self.collisionHandlerEvent = CollisionHandlerEvent()
        base.enableParticles()

        #base.messenger.toggleVerbose()

        #self.collisionHandlerEvent.addInPattern('from-%in')
        self.collisionHandlerEvent.addInPattern('into-%in')
        self.collisionHandlerEvent.addOutPattern('outof-%in')

        self.player = self.scene.find("player")
        self.enemy = self.scene.find("enemy1")
        self.player.setPythonTag("ObjectController",
                                 Player(self.player, collisionMask=0x4))
        self.building_enemy = self.scene.find("building_enemy")

        #self.player.setPos(self.scene, 0,0,5)
        self.camera.setPos(self.render, 0, -50, 100)
        self.taskMgr.add(self.update, "update")

        self.accept('into-collision_enemy', self.crash)
        self.accept('into-collision_player', self.crash)
        self.accept('into-collision_plane', self.crash)

        base.cTrav.addCollider(self.scene.find("player/collision**"),
                               self.collisionHandlerEvent)
        base.cTrav.addCollider(self.scene.find("enemy1/collision**"),
                               self.collisionHandlerEvent)
        base.cTrav.addCollider(self.scene.find("basePlane/collision**"),
                               self.collisionHandlerEvent)

        #base.cTrav.showCollisions(self.render)

        InputManager.initWith(self, [
            InputManager.arrowUp, InputManager.arrowDown,
            InputManager.arrowRight, InputManager.arrowLeft, InputManager.keyS,
            InputManager.keyA, InputManager.space, InputManager.keyX,
            InputManager.keyV
        ])

        self.rails = self.scene.attachNewNode("rails")
        self.rails.setPos(self.scene, 0, 0, 0)
        self.rails_y = 0
        self.player.reparentTo(self.rails)

        self.player.setPos(self.rails, 0, 20, 0)

        #self.createStaticEnemy(self.building_enemy ,  -100 ,500, 0 )
        self.createStaticEnemy(self.building_enemy, 200, 850, 0)
        self.createStaticEnemy(self.building_enemy, -100, 1000, 0)
        self.createDynamicEnemy(self.enemy, -80, 500, 20, -200, 500, 20)
Ejemplo n.º 14
0
    def __init__(self):
        #--Collision Handler------------------------------------------------------
        self.collHandler = CollisionHandlerEvent()
        self.collHandler.addInPattern('%fn-into-%in')
        base.cTrav = CollisionTraverser('world traverser')

        #--Mouse Control----------------------------------------------------------
        base.disableMouse()
        self.properties = WindowProperties()
        self.properties.setCursorHidden(True)
        base.win.requestProperties(self.properties)

        #--Register Hud Elements--------------------------------------------------
        self.instruction1 = self.addInstruction("[click] to Shoot", 2)
        self.instruction2 = self.addInstruction("[a] to accelerate", 1)
        self.instruction3 = self.addInstruction("[esc] to quit", 0)

        self.scoreHud = self.addHudElement("", 0)
        self.accuracy = self.addHudElement("", 1)
        self.speedHud = self.addHudElement("", 2)

        self.bigHud = OnscreenText(text="",
                                   style=1,
                                   fg=(1, 1, 1, 1),
                                   pos=(0, 0),
                                   align=TextNode.ACenter,
                                   scale=.1)

        #--Load Objects and Models------------------------------------------------
        self.ship = Ship(self.collHandler)
        self.loadSkyBox()
        game.camera.reparentTo(self.ship.getModel())

        #--Start Game-------------------------------------------------------------
        self.asteroids = []
        self.resetGame()

        #--Controls --------------------------------------------------------------
        self.keysDown = {'a': 0}

        self.controlTask = taskMgr.add(self.gameLoop, "game-control-task")
        self.controlTask.lastTime = 0

        self.accept("escape", sys.exit, [0])
        self.accept("a", self.keyDown, ['a'])
        self.accept("a-up", self.keyUp, ['a'])
        self.accept("mouse1", self.shoot)
        self.accept("space", self.shoot)
        self.accept("resetgame", self.gameOver)

        if (DEBUG_CONTROLS):
            self.accept("0", self.ship.stop)
            self.accept("9", self.ship.getModel().setHpr, [0, 0, 0])

        #--Register CollisionEvent Handlers---------------------------------------
        self.accept('asteroid-into-bullet', self.bulletAsteroidCollision)
Ejemplo n.º 15
0
    def __init__(self, showbase, usersData, gameData):
        DirectObject.__init__(self)

        self.showbase = showbase
        self.usersData = usersData
        self.gameData = gameData

        random.seed(self.gameData.randSeed)

        # Initialize the collision traverser.
        self.cTrav = CollisionTraverser()

        # Initialize the handler.
        self.collHandEvent = CollisionHandlerEvent()
        self.collHandEvent.addInPattern('into-%in')

        self.world = World(showbase)

        self.ambientLight = showbase.render.attachNewNode(
            AmbientLight("ambientLight"))
        # Set the color of the ambient light
        self.ambientLight.node().setColor((.1, .1, .1, 1))
        # add the newly created light to the lightAttrib
        # showbase.render.setLight(self.ambientLight)

        self.spotlight = None

        numberOfPlayers = len(self.usersData)
        for index, user in enumerate(self.usersData):
            user.centipede = Centipede(showbase, index, numberOfPlayers,
                                       self.addToCollisions)
            if user.thisPlayer:
                self.centipede = user.centipede
                self.centipede.attachRing(showbase)

                self.spotlight = self.centipede.head.attachNewNode(
                    PointLight("playerSpotlight"))
                self.spotlight.setPos(LVector3(0, 0, 8))
                # Now we create a spotlight. Spotlights light objects in a given cone
                # They are good for simulating things like flashlights
                self.spotlight.node().setAttenuation(
                    LVector3(.025, 0.0005, 0.0001))
                self.spotlight.node().setColor((0.35, 0.35, .35, 1))
                self.spotlight.node().setSpecularColor((0.01, 0.01, 0.01, 1))

                showbase.render.setLight(self.spotlight)

        self.perPixelEnabled = True
        self.shadowsEnabled = True
        #if self.spotlight:
        #    self.spotlight.node().setShadowCaster(True, 512, 512)
        showbase.render.setShaderAuto()

        self.foods = []
        for i in range(self.gameData.maxFoods):
            self.foods.append(Food(self.showbase, i, self.addToCollisions))
Ejemplo n.º 16
0
 def make_traverser_handler(self):
     base.cTrav = CollisionTraverser()
     #base.mchandler = CollisionHandlerEvent()
     #base.mchandler = CollisionHandlerPusher()
     base.mchandler = PhysicsCollisionHandler()
     base.mchandler.addInPattern('into-%in')
     base.mchandler.addAgainPattern('%fn-again-%in')
     base.mchandler.addOutPattern('out-%in')
     base.mchandler.setStaticFrictionCoef(0.91)
     base.mchandler.setDynamicFrictionCoef(0.91)
Ejemplo n.º 17
0
    def __init__(self, entity):

        self.entity = entity

        self.setup_collision()
        self.queue = CollisionHandlerQueue()
        self.traverser = CollisionTraverser('Collision Traverser')
        self.traverser.showCollisions(render)
        self.traverser.add_collider(self.target_nodepath, self.queue)
        base.taskMgr.add(self.collide, "Collision Task")
Ejemplo n.º 18
0
 def __init__(self, camera, level):
     self.camera = camera
     self.level = level
     self.handler = CollisionHandlerQueue()
     self.traverser = CollisionTraverser('traverser')
     pickerNode = CollisionNode('mouseRay')
     pickerNP = self.camera.attachNewNode(pickerNode)
     pickerNode.setFromCollideMask(GeomNode.getDefaultCollideMask())
     self.pickerRay = CollisionRay()
     pickerNode.addSolid(self.pickerRay)
     self.traverser.addCollider(pickerNP, self.handler)
Ejemplo n.º 19
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)
Ejemplo n.º 20
0
 def __init__(self, mouse):
     ShowBase.__init__(self)
     self.mouse = mouse
     self.joy_x = None
     self.joy_y = None
     props = WindowProperties()
     props.setMouseMode(WindowProperties.MRelative)  # keep mouse in screen
     self.disableMouse()
     self.win.requestProperties(props)
     self.setBackgroundColor(0, 0, 0)
     # Make missiles glow
     self.filters = CommonFilters(self.win, self.cam)
     self.filters.setBloom(blend=(0, 0, 0, 1), desat=-0.5, intensity=3.0, size="large")
     self.screen_width = self.win.getXSize()
     self.screen_height = self.win.getYSize()
     self.center_x = self.screen_width/2
     self.center_y = self.screen_height/2
     # self.win.movePointer(0, self.center_x, self.center_y)
     self.enableParticles()
     self.cTrav = CollisionTraverser()
     # self.cTrav.setRespectPrevTransform(True)
     self.pusher = PhysicsCollisionHandler()
     self.pusher.addInPattern('%fn-into-%in')
     self.target = None
     self.maxvel = 50
     self.roll_time = 0
     self.fuel = 1000
     self.ship()
     self.sounds()
     self.hud()
     self.part = Spacedust(self)
     self.events()
     self.camLens.setFov(70)
     self.camLens.setNear(1)
     self.camLens.setFar(500)
     self.get_key = {
         "ACCEL": False,
         "DECEL": False,
         "FORWARD_THRUST": False,
         "REVERSE_THRUST": False,
         "ROLL_LEFT": False,
         "ROLL_RIGHT": False,
         "ROLL_LEFT_BEG": False,
         "ROLL_RIGHT_BEG": False,
         "FIRE": False,
         "FIRING": False,
         "LOCK": False,
         "LOCKING": False,
     }
     self.AIworld = AIWorld(self.render)
     self.taskMgr.add(self.update, "task-update")
     self.taskMgr.doMethodLater(1, self.fuel_usage, "task-fuel-usage")
     self.taskMgr.add(self.AI_update, "AI-update")
     self.gen_enemy()
Ejemplo n.º 21
0
 def __init__(self, name, model):
     self.name = name
     self.node = NodePath(name + "_character")
     self.node.reparent_to(render)
     self.model = model
     self.model.reparent_to(self.node)
     self.traverser = CollisionTraverser()
     self.item_ray = self.ray("item", base.itemmask, point_b=(0, 1, 1))
     self.movement = Vec3(0, 0, 0)
     self.speed = 0.85
     self.keys = ""
Ejemplo n.º 22
0
	def setupMouseCollision(self):
		self.mouseTraverser = CollisionTraverser()
		self.mouseCollisionQueue    = CollisionHandlerQueue()
		self.mouseRay = CollisionRay()
		self.mouseRay.setOrigin(self.pandaScene.camera.getPos(self.pandaScene.render))
		self.mouseRay.setDirection(self.pandaScene.render.getRelativeVector(self.pandaScene.camera, Vec3(0,1,0)))
		self.mouseNode = CollisionNode('mouseRay')
		self.mouseNode.addSolid(self.mouseRay)
		self.mouseNodePath = self.pandaScene.camera.attachNewNode(self.mouseNode)
		self.mouseNode.setFromCollideMask(GeomNode.getDefaultCollideMask())
		self.mouseTraverser.addCollider(self.mouseNodePath, self.mouseCollisionQueue)
    def __init__(self):
        base.cTrav = CollisionTraverser()
        base.pusher = CollisionHandlerPusher()
        ConfigRender.__init__(self)

        self.elapsedSeconds = 0
        self.mapData = MapsModel()
        self.gameData = GameModel('./saves/')
        self.load_fonts()

        # this needs to be called only when game starts
        taskMgr.add(self.updateTime, 'updateTime')
Ejemplo n.º 24
0
    def __init__(self):
        """Setup this app."""
        ShowBase.__init__(self)

        #Setup window
        wnd_props = WindowProperties()
        wnd_props.set_title("Neo Impressive Title")
        #wnd_props.set_origin(0, 0)
        wnd_props.set_size(1024, 768)
        self.win.request_properties(wnd_props)

        self.set_background_color(0, .5, 1, 1)

        #Init GUI sub-system
        self.gui = GUI(self)
        self.gui.run()

        #Init app state
        self.state = APP_STATE_LOGO
        self.logo_delay = 600

        #Start title music
        self.title_music = loader.loadMusic("./data/sounds/title.ogg")
        self.title_music.set_loop(True)
        self.title_music.play()

        #Setup collision detection
        self.cTrav = CollisionTraverser()

        self.portal_handler = CollisionHandlerEvent()
        self.portal_handler.add_in_pattern("%fn-entered-%in")

        #Init other sub-systems
        self.cam_mgr = CameraManager()
        self.world_mgr = WorldManager()

        #Setup lighting
        self.ambient = AmbientLight("Ambient Light")
        self.ambient.set_color(Vec4(.5, .5, .5, 1))
        self.ambient_np = self.render.attach_new_node(self.ambient)
        self.render.set_light(self.ambient_np)

        self.sun = DirectionalLight("Sun")
        self.sun_np = self.render.attach_new_node(self.sun)
        self.sun_np.set_p(-135)
        self.render.set_light(self.sun_np)

        #Setup auto-shaders
        self.render.set_shader_auto()

        #Debug stats
        #self.messenger.toggle_verbose()
        PStatClient.connect()
Ejemplo n.º 25
0
    def __init__(self):
        # start Panda3d
        base = ShowBase()
        # CollisionTraverser instance must be attached to base,
        # and must be called cTrav
        base.cTrav = CollisionTraverser()
        self.cHand = CollisionHandlerEvent()
        self.cHand.addInPattern('into-%in')
        
        # load smiley, which we will control
        # notice this is a little trickery. If we parent everything except smiley
        # to the camera, and the player is controlling the camera, then everything 
        # stays fixed in the same place relative to the camera, and when the camera
        # moves, the player is given the illusion that he is moving smiley, rather than 
        # the camera and the rest of the scene.
        self.smiley = base.loader.loadModel('smiley')
        self.smiley.reparentTo(render)
        self.smiley.setName('Smiley')
        
        # Setup a collision solid for this model. Our initCollisionSphere method returns
        # the cNodepath and the string representing it. We will use the cNodepath for 
        # adding to the traverser, and the string to accept it for event handling.
        #sColl = self.initCollisionSphere(self.smiley)
        sColl = self.initCollisionSphere(self.smiley, True)
        print 'smiley', sColl[0]
        print 'smiley', sColl[1]

        # Add this object to the traverser.
        base.cTrav.addCollider(sColl[0], self.cHand)

        # load frowney
        self.frowney = base.loader.loadModel('frowney')
        self.frowney.setName('Frowney')
        self.frowney.reparentTo(camera)
        
        # Setup a collision solid for this model.
        fColl = self.initCollisionSphere(self.frowney, True)
        #print 'frowney', fColl[0]
        #print 'frowney', fColl[1]
        
        # Add this object to the traverser.
        base.cTrav.addCollider(fColl[0], self.cHand)

        # Accept the events sent by the collisions.
        # smiley is the object we are 'moving', so by convention
        # it is the from object.
        # If we instead put smiley as the into object here,
        # it would work fine, but then smiley would disappear
        # when we collided them.
        self.accept('into-' + fColl[1], self.collide)        

        # set the initial positions of smiley and frowney
        self.set_initial_positions()
Ejemplo n.º 26
0
  def initMouseToWorldCoordConversion(self):
    self.picker = CollisionTraverser()
    self.pq = CollisionHandlerQueue()

    self.pickerNode = CollisionNode('mouseRay')
    self.pickerNP = self.showBase.camera.attachNewNode(self.pickerNode)

    self.pickerNode.setFromCollideMask(BitMask32.bit(1))
    self.pickerRay = CollisionRay()

    self.pickerNode.addSolid(self.pickerRay)
    self.picker.addCollider(self.pickerNP, self.pq)
Ejemplo n.º 27
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.traverser = CollisionTraverser()
        self.queue = CollisionHandlerQueue()

        self.picker_ray = CollisionRay()
        self.picker_node = CollisionNode('mouse ray')
        self.picker_node.add_solid(self.picker_ray)
        self.picker_node.set_from_collide_mask(MOUSEOVER_MASK)
        self.picker_node.set_into_collide_mask(0x0)
        self.picker_node_path = NodePath(self.picker_node)

        self.traverser.add_collider(self.picker_node_path, self.queue)
Ejemplo n.º 28
0
 def __init__(self):
     self.hitters = [
         self.setup_collision_ray(offset, bitmask) for offset, bitmask in [
             (-3, BM_LEFT),
             (3, BM_RIGHT),
         ]
     ]
     self.queue = CollisionHandlerQueue()
     self.traverser = CollisionTraverser('Collision Traverser')
     self.traverser.showCollisions(base.render)
     for ray in self.hitters:
         self.traverser.add_collider(ray, self.queue)
     base.taskMgr.add(self.collide, "Collision Task")
Ejemplo n.º 29
0
 def __init__(self):
     super().__init__(
         name = 'raycaster',
         eternal = True
         )
     self._picker = CollisionTraverser()  # Make a traverser
     self._pq = CollisionHandlerQueue()  # Make a handler
     self._pickerNode = CollisionNode('raycaster')
     self._pickerNP = self.attach_new_node(self._pickerNode)
     self._collision_ray = CollisionRay()  # Make our ray
     self._pickerNode.addSolid(self._collision_ray)
     self._picker.addCollider(self._pickerNP, self._pq)
     self._pickerNP.show()
Ejemplo n.º 30
0
    def __init__(self):
        ShowBase.__init__(self)
        self.keyMap = {
            "up": False,
            "down": False,
            "left": False,
            "right": False,
            "shoot": False
        }
        self.base = base
        self.boule_time = 0
        base.setFrameRateMeter(True)  # mesure le FPS
        # Création du plateau de jeu
        self.environment = loader.loadModel("./Environment/environment")
        self.environment.reparentTo(render)
        # Positionnement de la caméra
        self.Cam_init()
        # Réglages des éclairages
        self.ambientLight = AmbientLight("ambient light")
        self.Init_eclairage()
        # Gestions des collisions avec les autres objets (MUR pour l'instant)
        self.pusher = CollisionHandlerPusher()
        # Pour la gestion de l'arbre de collisions
        base.cTrav = CollisionTraverser()
        # gestion des déplacements
        self.Init_mvt()

        # création du heros selon le modele ./fox/Fox
        self.heros = Heros(self, Vec3(0, 0, 0), "./fox/Fox", {
            "stand": "./fox/Fox-Idle_fp",
            "walk": "./fox/Fox-Walk_fp"
        }, 5, 10, "HEROS", 2)
        self.heros.actor.reparentTo(render)
        # création des objets de décors
        self.tour1 = obj_inactifs(Vec3(12, 9, 1), "tour/tour", 0, "T1", 1)
        self.tour1.obj.reparentTo(render)
        self.tour2 = obj_inactifs(Vec3(-12, 9, 1), "tour/tour", 0, "T2", 1)
        self.tour2.obj.reparentTo(render)
        self.sorcier = obj_inactifs(Vec3(12, 9, 6), "sorcier/wizard", 130,
                                    "SORCIER", 0.45)
        self.sorcier.obj.reparentTo(render)

        #init des armes
        self.boule = Boule_feu(self)

        # initialisation des déplacements
        self.Init_mvt()
        # initialisation des zones de collisions du decor
        self.Init_coll()
        # activation des évènements
        self.updateTask = taskMgr.add(self.update, "update")