def loadLever(self):
     self.lever = self.root.attachNewNode('%sLever' % self.activityName)
     self.leverModel = self.party.defaultLeverModel.copyTo(self.lever)
     self.controlColumn = NodePath('cc')
     column = self.leverModel.find('**/column')
     column.getChildren().reparentTo(self.controlColumn)
     self.controlColumn.reparentTo(column)
     self.stickHinge = self.controlColumn.attachNewNode('stickHinge')
     self.stick = self.party.defaultStickModel.copyTo(self.stickHinge)
     self.stickHinge.setHpr(0.0, 90.0, 0.0)
     self.stick.setHpr(0, -90.0, 0)
     self.stick.flattenLight()
     self.bottom = self.leverModel.find('**/bottom')
     self.bottom.wrtReparentTo(self.controlColumn)
     self.bottomPos = self.bottom.getPos()
     cs = CollisionSphere(0.0, 1.35, 2.0, 1.0)
     cs.setTangible(False)
     cn = CollisionNode(self.leverTriggerEvent)
     cn.addSolid(cs)
     cn.setIntoCollideMask(OTPGlobals.WallBitmask)
     self.leverTrigger = self.root.attachNewNode(cn)
     self.leverTrigger.reparentTo(self.lever)
     self.leverTrigger.stash()
     cs = CollisionTube(0.0, 2.7, 0.0, 0.0, 2.7, 3.0, 1.2)
     cn = CollisionNode('levertube')
     cn.addSolid(cs)
     cn.setIntoCollideMask(OTPGlobals.WallBitmask)
     self.leverTube = self.leverModel.attachNewNode(cn)
     host = base.cr.doId2do.get(self.party.partyInfo.hostId)
     if host is None:
         self.notify.debug('%s loadLever : Host has left the game before lever could be created.' % self.activityName)
         return
     scale = host.getGeomNode().getChild(0).getSz(render)
     self.leverModel.setScale(scale)
     self.controlColumn.setPos(0, 0, 0)
     host.setPosHpr(self.lever, 0, 0, 0, 0, 0, 0)
     host.pose('leverNeutral', 0)
     host.update()
     pos = host.rightHand.getPos(self.controlColumn)
     self.controlColumn.setPos(pos[0], pos[1], pos[2] - 1)
     self.bottom.setZ(host, 0.0)
     self.bottom.setPos(self.bottomPos[0], self.bottomPos[1], self.bottom.getZ())
     lookAtPoint = Point3(0.3, 0, 0.1)
     lookAtUp = Vec3(0, -1, 0)
     self.stickHinge.lookAt(host.rightHand, lookAtPoint, lookAtUp)
     host.play('walk')
     host.update()
     return
Beispiel #2
0
 def sphere(self, name, bitmask, pos=(0, 0, 1), radius=0.2):
     col = CollisionNode(self.node.getName() + "-sphere-" + name)
     shape = CollisionSphere(pos, radius)
     col.add_solid(shape)
     col.set_from_collide_mask(bitmask)
     col.set_into_collide_mask(CollideMask.allOff())
     col_node = self.node.attachNewNode(col)
     handler = CollisionHandlerPusher()
     handler.add_collider(col_node, self.node)
     self.traverser.add_collider(col_node, handler)
     return {
         "collider": col,
         "shape": shape,
         "handler": handler,
         "node": col_node
     }
 def setupElevatorKart(self):
     collisionRadius = ElevatorConstants.ElevatorData[
         self.type]['collRadius']
     self.elevatorSphere = CollisionSphere(0, 0, 0, collisionRadius)
     self.elevatorSphere.setTangible(1)
     self.elevatorSphereNode = CollisionNode(
         self.uniqueName('elevatorSphere'))
     self.elevatorSphereNode.setIntoCollideMask(ToontownGlobals.WallBitmask)
     self.elevatorSphereNode.addSolid(self.elevatorSphere)
     self.elevatorSphereNodePath = self.getElevatorModel().attachNewNode(
         self.elevatorSphereNode)
     self.elevatorSphereNodePath.hide()
     self.elevatorSphereNodePath.reparentTo(self.getElevatorModel())
     self.elevatorSphereNodePath.stash()
     self.boardedAvIds = {}
     self.finishSetup()
Beispiel #4
0
    def announceGenerate(self):
        DistributedNode.announceGenerate(self)
        self.build()

        # Build collisions
        self.collSphere = CollisionSphere(0, 0, 0, self.sphereRadius)
        self.collSphere.setTangible(0)
        self.collNode = CollisionNode(self.uniqueName('barrelSphere'))
        self.collNode.setIntoCollideMask(CIGlobals.WallBitmask)
        self.collNode.addSolid(self.collSphere)
        self.collNodePath = self.attachNewNode(self.collNode)
        self.collNodePath.hide()
        self.accept('enter' + self.collNodePath.getName(),
                    self.__handleCollision)

        self.setParent(CIGlobals.SPRender)
Beispiel #5
0
 def buildCollisions(self):
     TrapGag.buildCollisions(self)
     gagSph = CollisionSphere(0, 0, 0, 1)
     gagSph.setTangible(0)
     gagNode = CollisionNode('gagSensor')
     gagNode.addSolid(gagSph)
     gagNP = self.entity.attachNewNode(gagNode)
     gagNP.setScale(0.75, 0.8, 0.75)
     gagNP.setPos(0.0, 0.1, 0.5)
     gagNP.setCollideMask(BitMask32.bit(0))
     gagNP.node().setFromCollideMask(CIGlobals.FloorBitmask)
     event = CollisionHandlerEvent()
     event.setInPattern('%fn-into')
     event.setOutPattern('%fn-out')
     base.cTrav.addCollider(gagNP, event)
     self.avatar.acceptOnce('gagSensor-into', self.onCollision)
 def loadCollisions(self):
     sphere = CollisionSphere(0, 0, 0, 1)
     sphere.setTangible(0)
     node = CollisionNode(self.uniqueName('collectableCollNode'))
     node.addSolid(sphere)
     node.setCollideMask(CIGlobals.WallBitmask)
     self.collSensorNodePath = self.attachNewNode(node)
     ray = CollisionRay(0.0, 0.0, CollisionHandlerRayStart, 0.0, 0.0, -1.0)
     rayNode = CollisionNode(self.uniqueName('collectableRayNode'))
     rayNode.addSolid(ray)
     rayNode.setFromCollideMask(CIGlobals.FloorBitmask)
     rayNode.setIntoCollideMask(BitMask32.allOff())
     self.collRayNodePath = self.attachNewNode(rayNode)
     lifter = CollisionHandlerFloor()
     lifter.addCollider(self.collRayNodePath, self)
     base.cTrav.addCollider(self.collRayNodePath, lifter)
Beispiel #7
0
 def load(self):
     self.model = loader.loadModel('phase_5/models/props/snowball.bam')
     self.model.reparentTo(self)
     base.audio3d.attachSoundToObject(self.impactSound, self)
     sphere = CollisionSphere(0, 0, 0, 0.35)
     sphere.setTangible(0)
     node = CollisionNode('snowball-coll-' + str(id(self)))
     node.addSolid(sphere)
     node.setFromCollideMask(CIGlobals.WallBitmask | CIGlobals.FloorBitmask)
     self.collNP = self.attachNewNode(node)
     self.collNP.setCollideMask(BitMask32(0))
     self.collNP.setZ(0.35)
     event = CollisionHandlerEvent()
     event.set_in_pattern('%fn-into')
     event.set_out_pattern('%fn-out')
     base.cTrav.add_collider(self.collNP, event)
Beispiel #8
0
 def init_sensors(self, entity, movement):
     solids = movement.solids
     for tag, solid in solids.items():
         solid['tag'] = tag
         if solid['shape'] is CollisionSphere:
             shape = CollisionSphere(solid['center'], solid['radius'])
             self.add_shape(entity, movement, solid, shape)
         elif solid['shape'] is CollisionCapsule:
             shape = CollisionCapsule(
                 solid['end_a'],
                 solid['end_b'],
                 solid['radius'],
             )
             self.add_shape(entity, movement, solid, shape)
     if movement.debug:
         movement.traverser.show_collisions(entity[Scene].node)
Beispiel #9
0
    def __init__(self):
        ShowBase.__init__(self)

        # Create a traverser and a handler
        self.cTrav = CollisionTraverser()
        self.cQueue = CollisionHandlerQueue()

        # Create the collision node that will store the collision
        # ray solid
        self.pickerNode = CollisionNode('mouseRay')
        # Set bitmask for efficiency, only hit from objects with same mask
        self.pickerNode.setFromCollideMask(BitMask32.bit(1))
        # Attach collision node to camera, since that is the source
        self.pickerNP = camera.attachNewNode(self.pickerNode)

        # Add collision solid(ray) to collision node
        self.pickerRay = CollisionRay()
        self.pickerNode.addSolid(self.pickerRay)
        # Add collidable node(pickerNP) to the traverser
        # Collisions detected when traversed will go to cQueue
        self.cTrav.addCollider(self.pickerNP, self.cQueue)

        # Create visible sphere
        self.tmpSphere = self.loader.loadModel("models/misc/sphere")
        self.tmpSphere.reparentTo(self.render)
        self.tmpSphere.setColor(1, 1, 1, 1)
        self.tmpSphere.setPos(0, 100, 0)

        # Create collision sphere and attach to tmpSphere
        cSphere = CollisionSphere(0, 0, 0, 3)
        cnodePath = self.tmpSphere.attachNewNode(CollisionNode('cnode'))
        # Add collision solid(sphere) to collision node
        # Because tmpSphere/cSphere is child of render, which we traverse
        # later, it becomes a from collider automatically, we don't
        # need to addCollider since that is only for from collision nodes
        cnodePath.node().addSolid(cSphere)
        # Set bitmask to match the from collisionnode mask for efficiency
        cnodePath.setCollideMask(BitMask32.bit(1))
        # Show the collision sphere visibly, for debugging.
        cnodePath.show()
        # Set a custom tag on the collision node which becomes available
        # inside the collision event stored in the collision handler
        cnodePath.setTag('someTag', '1')

        # Add task to run every frame - set collision solid(ray)
        # to start at the current camera position,
        self.mouseTask = taskMgr.add(self.mouseTask, 'mouseTask')
Beispiel #10
0
 def buildCollisions(self):
     TrapGag.buildCollisions(self)
     gagSph = CollisionSphere(0, 0, 0, self.collRadius)
     gagSph.setTangible(0)
     gagNode = CollisionNode('gagSensor')
     gagNode.addSolid(gagSph)
     gagNP = self.gag.attachNewNode(gagNode)
     gagNP.setScale(0.75, 0.8, 0.75)
     gagNP.setPos(0.0, 0.1, 0.5)
     gagNP.setCollideMask(BitMask32.bit(0))
     gagNP.node().setFromCollideMask(CIGlobals.WallBitmask | CIGlobals.FloorBitmask)
     event = CollisionHandlerEvent()
     event.set_in_pattern('%fn-into')
     event.set_out_pattern('%fn-out')
     base.cTrav.addCollider(gagNP, event)
     if self.isLocal():
         self.avatar.accept('gagSensor-into', self.onCollision)
Beispiel #11
0
    def _explode_grenade(self, grenade_pos):
        """Explode the grenade, shot from the launcher.

        Args:
            grenade_pos (panda3d.core.Point3):
                The position, where the sight was
                when player made the shot.
        """
        col_node = CollisionNode("grenade_explosion")
        col_node.setFromCollideMask(NO_MASK)
        col_node.setIntoCollideMask(SHOT_RANGE_MASK)
        col_node.addSolid(CollisionSphere(0, 0, 0, 0.096))

        base.accept("into-grenade_explosion", self._do_grenade_damage)  # noqa: F821

        col_np = self._model.attachNewNode(col_node)
        col_np.setPos(grenade_pos)

        self._hole_sprite.setPos(grenade_pos)
        self._hole_sprite.wrtReparentTo(
            base.world.current_block.rails_mod  # noqa: F821
        )
        self._hole_sprite.show()

        self._grenade_explosion.setPos(grenade_pos)
        self._grenade_explosion.start(self._model, render)  # noqa: F821
        self._grenade_explosion.softStart()

        self._grenade_smoke.setPos(grenade_pos)
        self._grenade_smoke.start(self._model, render)  # noqa: F82
        self._grenade_smoke.softStart()

        self._explosion_snd.play()

        taskMgr.doMethodLater(  # noqa: F821
            1, self._grenade_explosion.softStop, "stop_grenade_explosion", extraArgs=[]
        )
        taskMgr.doMethodLater(  # noqa: F821
            2.5, self._grenade_smoke.softStop, "stop_grenade_smoke", extraArgs=[]
        )
        taskMgr.doMethodLater(  # noqa: F821
            0.1, col_np.removeNode, "remove_grenade_solid", extraArgs=[]
        )
        taskMgr.doMethodLater(  # noqa: F821
            4, self._return_hole_sprite, "hide_ground_hole",
        )
Beispiel #12
0
    def show_target(self):
        self.target_select()
        self.intoObject = self.tar.attachNewNode(CollisionNode('colintoNode'))

        if self.table[self.trial_counter,7] == "sphere":
            self.intoObject.node().addSolid(CollisionSphere(0,0,0,1))
        elif self.table[self.trial_counter,7] == "cylinder":
            self.intoObject.node().addSolid(CollisionTube(0,0,-2,0,0,2,1))
        else:
            raise NameError("No such collision type")

        self.tar.show()

        #hide players not related to target
        for i in range(5):
            if i not in self.highlighted_indices:
                self.players[i].hide()
 def announceGenerate(self):
     DistributedToonFPSGame.announceGenerate(self)
     base.camLens.setMinFov(CIGlobals.GunGameFOV / (4.0 / 3.0))
     base.camLens.setFar(250)
     base.localAvatar.setPythonTag('localAvatar', 1)
     self.avatarBody = base.localAvatar.attachNewNode(
         CollisionNode('sphereforguardeyes'))
     self.avatarBody.node().addSolid(CollisionSphere(0, 0, 0, 1.2))
     self.avatarBody.node().setFromCollideMask(BitMask32.allOff())
     self.avatarBody.node().setIntoCollideMask(CGG.GuardBitmask)
     self.gameWorld = FactorySneakWorld(self)
     self.gameWorld.loadWorld()
     self.gameWorld.loadJellybeanBarrels()
     self.gameWorld.makeGuards()
     self.gameWorld.showWorld()
     self.gameWorld.setupPlayer()
     self.load()
Beispiel #14
0
def gen_surfaceballs_cdnp(objtrm, name='cdnp_surfaceball', radius=0.01):
    """
    :param obstacle:
    :return:
    author: weiwei
    date: 20180811
    """
    nsample = int(math.ceil(objtrm.area / (radius * 0.3)**2))
    nsample = 120 if nsample > 120 else nsample  # threshhold
    samples = objtrm.sample_surface(nsample)
    collision_node = CollisionNode(name)
    for sglsample in samples:
        collision_node.addSolid(
            CollisionSphere(sglsample[0],
                            sglsample[1],
                            sglsample[2],
                            radius=radius))
    return collision_node
Beispiel #15
0
 def loadModel(self):
     self.hill = loader.loadModel('phase_12/models/bossbotHQ/mole_hole')
     self.hill.setZ(0.0)
     self.hill.reparentTo(self)
     self.mole = self.attachNewNode('mole')
     self.mole.reparentTo(self)
     self.mole.setScale(0.75)
     self.mole.setZ(-2.5)
     self.moleHead = loader.loadModel('phase_12/models/bossbotHQ/mole_norm')
     self.moleHead.reparentTo(self.mole)
     moleColName = 'moleCol'
     moleSphere = CollisionSphere(0, 0, 0, 1.0)
     collNode = CollisionNode(moleColName)
     collNode.setIntoCollideMask(ToontownGlobals.WallBitmask)
     collNode.addSolid(moleSphere)
     self.moleColNodePath = self.mole.attachNewNode(collNode)
     self.moleColNodePath.stash()
     self.moleColNodePath.setScale(1.0)
Beispiel #16
0
 def initHearts(self):
     heartPositions = self.level.findAllMatches('**/*Heart*')
     self.hearts = []
     i = 0
     for pos in heartPositions:
         heart = loader.loadModel("Heart")
         heart.reparentTo(pos)
         heartRotation = heart.hprInterval(2.0, Vec3(360, 0, 0))
         heartRotation.loop()
         heartsphere = CollisionSphere(0, 0, 0, 0.5)
         heartsphere.setTangible(False)
         heartColNP = heart.attachNewNode(CollisionNode('heart%d'%i))
         heartColNP.node().addSolid(heartsphere)
         self.accept("playerCollision-in-heart%d"%i,
                     self.__collectHeart,
                     extraArgs=[i])
         self.hearts.append(heart)
         i+=1
Beispiel #17
0
    def _start_shooting(self):
        """Start the machine gun shooting sequence."""
        self._shot_snd.play()
        taskMgr.doMethodLater(0.25, self._make_shot, "machine_gun_shoot")  # noqa: F82
        taskMgr.doMethodLater(  # noqa: F82
            4, self._stop_shooting, "stop_machine_gun_shooting"
        )

        col_node = CollisionNode("machine_gun_bullet")
        col_node.setFromCollideMask(NO_MASK)
        col_node.setIntoCollideMask(SHOT_RANGE_MASK)
        col_node.addSolid(CollisionSphere(0, 0, 0, 0.005))
        self._col_np = self._sight.attachNewNode(col_node)

        self._shot_dirt.start(self._sight, render)  # noqa: F82
        self._shot_dirt.softStart()

        base.accept("into-machine_gun_bullet", self._do_damage)  # noqa: F82
Beispiel #18
0
 def initCollisions(self):
     self.collSphere = CollisionSphere(0, 0, 0, 1.25)
     self.collSphere.setTangible(1)
     name = 'CogThiefSphere-%d' % self.cogIndex
     self.collSphereName = self.uniqueName(name)
     self.collNode = CollisionNode(self.collSphereName)
     self.collNode.setIntoCollideMask(CTGG.BarrelBitmask | ToontownGlobals.WallBitmask)
     self.collNode.addSolid(self.collSphere)
     self.collNodePath = self.suit.attachNewNode(self.collNode)
     self.accept('enter' + self.collSphereName, self.handleEnterSphere)
     self.pieCollSphere = CollisionTube(0, 0, 0, 0, 0, 4, self.CollisionRadius)
     self.pieCollSphere.setTangible(1)
     name = 'CogThiefPieSphere-%d' % self.cogIndex
     self.pieCollSphereName = self.uniqueName(name)
     self.pieCollNode = CollisionNode(self.pieCollSphereName)
     self.pieCollNode.setIntoCollideMask(ToontownGlobals.PieBitmask)
     self.pieCollNode.addSolid(self.pieCollSphere)
     self.pieCollNodePath = self.suit.attachNewNode(self.pieCollNode)
    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)
    def announceGenerate(self):
        DistributedNode.announceGenerate(self)
        self.kart = loader.loadModel('phase_6/models/karting/Kart3_Final.bam')
        self.kart.find('**/decals').removeNode()
        self.kart.reparentTo(self)
        self.pod = loader.loadModel('phase_4/models/minigames/pods_truck.egg')
        self.pod.reparentTo(self)
        self.pod.setScale(0.2)
        self.pod.setY(8.5)
        self.pod.setH(180)
        self.pod.find('**/metal_ramp').setBin('ground', 18)
        self.pod.find('**/metal_ramp_coll').setCollideMask(
            CIGlobals.FloorBitmask)
        self.rope = Rope()
        self.rope.ropeNode.setUseVertexColor(1)
        self.rope.setup(3, ({
            'node': self.kart,
            'point': (0, 1.5, 0.7),
            'color': (0, 0, 0, 1),
            'thickness': 1000
        }, {
            'node': self.kart,
            'point': (0, 1.5, 0.7),
            'color': (0, 0, 0, 1),
            'thickness': 1000
        }, {
            'node': self.pod,
            'point': (0, 31, 5),
            'color': (0, 0, 0, 1),
            'thickness': 1000
        }), [])
        self.rope.setH(180)
        self.rope.reparentTo(self)
        sphere = CollisionSphere(0, 0, 0, 2)
        sphere.setTangible(0)
        node = CollisionNode(self.uniqueName('truck_trigger'))
        node.addSolid(sphere)
        node.setCollideMask(CIGlobals.WallBitmask)
        self.triggerNP = self.attachNewNode(node)
        self.triggerNP.setPos(0, 8.0, 2.0)
        self.setScale(2.0)

        self.accept('enter' + self.triggerNP.node().getName(),
                    self.__handleTruckTrigger)
Beispiel #21
0
    def pieThrow(self, avId, timestamp, heading, pos, power):
        toon = self.activity.getAvatar(avId)
        if toon is None:
            return
        else:
            tossTrack, pieTrack, flyPie = self.getTossPieInterval(
                toon, pos[0], pos[1], pos[2], heading, 0, 0, power)
            if avId == base.localAvatar.doId:
                flyPie.setTag('throwerId', str(avId))
                collSphere = CollisionSphere(0, 0, 0, 0.5)
                collSphere.setTangible(0)
                name = 'PieSphere-%d' % avId
                collSphereName = self.activity.uniqueName(name)
                collNode = CollisionNode(collSphereName)
                collNode.setFromCollideMask(ToontownGlobals.PieBitmask)
                collNode.addSolid(collSphere)
                collNP = flyPie.attachNewNode(collNode)
                base.cTrav.addCollider(collNP, self.pieHandler)
                self.toonPieEventNames[collNP] = 'pieHit-' + collSphereName
                self.accept(self.toonPieEventNames[collNP],
                            self.handlePieCollision)
            else:
                player = self.players.get(avId)
                if player is not None:
                    player.faceForward()

            def matchRunningAnim(toon=toon):
                toon.playingAnim = None
                toon.setSpeed(toon.forwardSpeed, toon.rotateSpeed)
                return

            newTossTrack = Sequence(tossTrack, Func(matchRunningAnim))
            pieTrack = Parallel(newTossTrack,
                                pieTrack,
                                name='PartyCogActivity.pieTrack-%d-%s' %
                                (avId, timestamp))
            elapsedTime = globalClockDelta.localElapsedTime(timestamp)
            if elapsedTime < 16.0 / 24.0:
                elapsedTime = 16.0 / 24.0
            pieTrack.start(elapsedTime)
            self.pieIvals.append(pieTrack)
            self.toonPieTracks[avId] = pieTrack
            return
 def setupElevator(self):
     collisionRadius = ElevatorData[self.type]['collRadius']
     self.elevatorSphere = CollisionSphere(0, 5, 0, collisionRadius)
     self.elevatorSphere.setTangible(0)
     self.elevatorSphereNode = CollisionNode(
         self.uniqueName('elevatorSphere'))
     self.elevatorSphereNode.setIntoCollideMask(CIGlobals.WallBitmask)
     self.elevatorSphereNode.addSolid(self.elevatorSphere)
     self.elevatorSphereNodePath = self.getElevatorModel().attachNewNode(
         self.elevatorSphereNode)
     self.elevatorSphereNodePath.reparentTo(self.getElevatorModel())
     self.openDoors = getOpenInterval(self, self.getLeftDoor(),
                                      self.getRightDoor(), self.openSfx,
                                      None, self.type)
     self.closeDoors = getCloseInterval(self, self.getLeftDoor(),
                                        self.getRightDoor(), self.closeSfx,
                                        None, self.type)
     self.closeDoors = Sequence(self.closeDoors,
                                Func(self.onDoorCloseFinish))
Beispiel #23
0
    def initCollisionSphere(self, obj, show=False):
        # Get the size of the object for the collision sphere.
        bounds = obj.getChild(0).getBounds()
        center = bounds.getCenter()
        radius = bounds.getRadius() * 1.1

        # Create a collision sphere and name it something understandable.
        collSphereStr = 'CollisionHull{0}_{1}'.format(self.collCount, obj.name)
        self.collCount += 1
        cNode = CollisionNode(collSphereStr)
        cNode.addSolid(CollisionSphere(center, radius))

        cNodepath = obj.attachNewNode(cNode)
        if show:
            cNodepath.show()

        # Return a tuple with the collision node and its corrsponding string so
        # that the bitmask can be set.
        return (cNodepath, collSphereStr)
Beispiel #24
0
    def OnSpawn(self, parent):
        # Spawn in world (default)

        # Load a model for now its just one.
        self.seed = loader.loadModel("./assets/seed/seed")
        self.seedNP = self.seed.reparentTo(parent)
        self.seed.setZ(1)

        # Collision body
        cs = CollisionSphere(0, 0, 0, 0.4)
        cs.setTangible(False)
        self.cnodePath = self.seed.attachNewNode(
            CollisionNode("seedSphere-" + self.id))
        self.cnodePath.node().addSolid(cs)
        self.cnodePath.node().setIntoCollideMask(BitMask32(0x80))  # 1000 0000

        #self.cnodePath.show()

        self.seedState = 0
Beispiel #25
0
    def __init__(self, n=1, bins=1):

        #index = md()
        #def get_index():
        #return index
        #indexMan.register('index',get_index)
        #self.iman = indexMan(('127.0.0.1',5000),authkey='none')
        #self.iman.start()
        index = {}
        #index_counter = Counter(0,1)

        collideRoot = render.attachNewNode('collideRoot')
        bases = [
            np.cumsum(np.random.randint(-1, 2, (n, 3)), axis=0)
            for i in range(bins)
        ]
        type_ = GeomPoints
        runs = []

        for base in bases:
            runs.append(convertToGeom(index_counter, base, type_))

        for nodes in runs:
            for node, idx in nodes():  #FIXME stupid
                nd = render.attachNewNode(node)
                index.update(idx)  #FIXME this is nasty
                print(idx)
        for uid, list_ in index.items():
            #TODO to change the color of a selected node we will need something a bit more ... sophisticated
            #parent = list_[1][0]
            if list_ == None:
                continue
            cNode = collideRoot.attachNewNode(
                CollisionNode('collider %s' %
                              uid))  #ultimately used to index??
            cNode.node().addSolid(CollisionSphere(0, 0, 0, .5))
            cNode.node().setIntoCollideMask(BitMask32.bit(BITMASK_COLL_CLICK))
            cNode.setPos(*list_[0])
            cNode.setPythonTag('uid', uid)
            cNode.show()
            list_[
                2] = cNode  #FIXME this is inconsistent and the 'uid' means different things in different contexts!
        print(index_counter.value)
Beispiel #26
0
    def initCollisions(self):
        # Initialize the collision traverser.
        self.cTrav = CollisionTraverser()

        self.cTrav.showCollisions(self.render)

        # Initialize the Pusher collision handler.
        self.pusher = CollisionHandlerFloor()

        ### player

        # Create a collsion node for this object.
        playerNode = CollisionNode('player')
        playerNode.addSolid(CollisionSphere(0, 0, 0, 1))

        # Attach the collision node to the object's model.
        self.playerC = self.fpscamera.player.attachNewNode(playerNode)
        # Set the object's collision node to render as visible.
        self.playerC.show()
    def __init__(self, pos, modelName, modelAnims, maxHealth, maxSpeed, colliderName):
        self.actor = Actor(modelName, modelAnims)
        self.actor.reparentTo(render)
        self.actor.setPos(pos)

        self.maxHealth = maxHealth
        self.health = maxHealth

        self.maxSpeed = maxSpeed

        self.velocity = Vec3(0, 0, 0)
        self.acceleration = 300.0

        self.walking = False

        colliderNode = CollisionNode(colliderName)
        colliderNode.addSolid(CollisionSphere(0, 0, 0, 0.3))
        self.collider = self.actor.attachNewNode(colliderNode)
        self.collider.setPythonTag("owner", self)
Beispiel #28
0
    def initPostsigns(self):
        objects = self.level.findAllMatches('**/Signpost.*')

        self.postsigns = {}

        i = 0
        for object in objects:
            postsphere = CollisionSphere(0, 0, 0.5, 1)
            postsphere.setTangible(False)
            postColNP = object.attachNewNode(CollisionNode('postsignInfo%d'%i))
            postColNP.node().addSolid(postsphere)
            self.postsigns.setdefault(object, postColNP)
            postName = object.getName()
            self.accept("playerCollision-in-postsignInfo%d"%i,
                        self.__setActivateElement,
                        extraArgs=[True, postName, "postsign"])
            self.accept("playerCollision-out-postsignInfo%d"%i,
                        self.__setActivateElement,
                        extraArgs=[False, postName, "postsign"])
            i+=1
Beispiel #29
0
 def loadCollision(self):
     collTube = CollisionTube(0.0, 0.0, self.z, 0.0, 0.0, self.z, 5.4)
     collTube.setTangible(True)
     self.trampolineCollision = CollisionNode(
         self.uniqueName('TrampolineCollision'))
     self.trampolineCollision.addSolid(collTube)
     self.trampolineCollision.setCollideMask(OTPGlobals.CameraBitmask
                                             | OTPGlobals.WallBitmask)
     self.trampolineCollisionNP = self.tramp.attachNewNode(
         self.trampolineCollision)
     collSphere = CollisionSphere(0.0, 0.0, self.z, 7.0)
     collSphere.setTangible(False)
     self.trampolineTrigger = CollisionNode(
         self.uniqueName('TrampolineTrigger'))
     self.trampolineTrigger.addSolid(collSphere)
     self.trampolineTrigger.setIntoCollideMask(OTPGlobals.WallBitmask)
     self.trampolineTriggerNP = self.tramp.attachNewNode(
         self.trampolineTrigger)
     self.accept('enter%s' % self.uniqueName('TrampolineTrigger'),
                 self.onTrampolineTrigger)
 def loadAssets(self):
     self.root = render.attachNewNode('golfSpot-%d' % self.index)
     self.root.setPos(*self.positions[self.index])
     self.ballModel = loader.loadModel('phase_6/models/golf/golf_ball')
     self.ballColor = VBase4(1, 1, 1, 1)
     if self.index < len(GolfGlobals.PlayerColors):
         self.ballColor = VBase4(*GolfGlobals.PlayerColors[self.index])
         self.ballModel.setColorScale(self.ballColor)
     self.ballModel.reparentTo(self.root)
     self.club = loader.loadModel('phase_6/models/golf/putter')
     self.clubLookatSpot = self.root.attachNewNode('clubLookat')
     self.clubLookatSpot.setY(-(GolfGlobals.GOLF_BALL_RADIUS + 0.1))
     cs = CollisionSphere(0, 0, 0, 1)
     cs.setTangible(0)
     cn = CollisionNode(self.triggerName)
     cn.addSolid(cs)
     cn.setIntoCollideMask(ToontownGlobals.WallBitmask)
     self.trigger = self.root.attachNewNode(cn)
     self.trigger.stash()
     self.hitBallSfx = loader.loadSfx('phase_6/audio/sfx/Golf_Hit_Ball.ogg')