Beispiel #1
0
 def loadAttack(self):
     self.phone = loader.loadModel('phase_3.5/models/props/phone.bam')
     self.phone.setHpr(0, 0, 180)
     if self.suit.type == 'B':
         self.phone.setPos(0.7, 0.15, 0)
     elif self.suit.type == 'C':
         self.phone.setPos(0.25, 0, 0)
     self.receiver = loader.loadModel('phase_3.5/models/props/receiver.bam')
     self.receiver.reparentTo(self.phone)
     self.cord = Rope()
     self.cord.ropeNode.setUseVertexColor(1)
     self.cord.ropeNode.setUseVertexThickness(1)
     self.cord.setup(3, ({'node': self.phone,
       'point': (0.8, 0, 0.2),
       'color': (0, 0, 0, 1),
       'thickness': 1000}, {'node': self.phone,
       'point': (2, 0, 0),
       'color': (0, 0, 0, 1),
       'thickness': 1000}, {'node': self.receiver,
       'point': (1.1, 0.25, 0.5),
       'color': (0, 0, 0, 1),
       'thickness': 1000}), [])
     self.cord.setH(180)
     self.phoneSfx = base.audio3d.loadSfx('phase_3.5/audio/sfx/SA_hangup.mp3')
     base.audio3d.attachSoundToObject(self.phoneSfx, self.phone)
     self.hangupSfx = base.audio3d.loadSfx('phase_3.5/audio/sfx/SA_hangup_place_down.mp3')
     base.audio3d.attachSoundToObject(self.hangupSfx, self.phone)
     collSphere = CollisionSphere(0, 0, 0, 2)
     collSphere.setTangible(0)
     collNode = CollisionNode('phone_shootout')
     collNode.addSolid(collSphere)
     collNode.setCollideMask(CIGlobals.WallBitmask)
     self.collNP = self.phone.attachNewNode(collNode)
Beispiel #2
0
    def doAttack(self, particlePaths, track_name, particleCollId, animation_name, delayUntilRelease, animationSpeed = 1, handObjPath = None, handObjParent = None, startRightAway = True, ts = 0):
        for path in particlePaths:
            particle = ParticleLoader.loadParticleEffect(path)
            self.particles.append(particle)

        sphere = CollisionSphere(0, 0, 0, 1)
        sphere.setTangible(0)
        node = CollisionNode(particleCollId)
        node.addSolid(sphere)
        node.setCollideMask(CIGlobals.WallBitmask)
        self.targetX = self.attacksClass.target.getX(render)
        self.targetY = self.attacksClass.target.getY(render)
        self.targetZ = self.attacksClass.target.getZ(render)
        if len(self.particles) == 1:
            self.shootOutCollNP = self.particles[0].attachNewNode(node)
        else:
            self.shootOutCollNP = self.suit.attachNewNode(node)
        if handObjPath and handObjParent:
            self.handObj = loader.loadModel(handObjPath)
            self.handObj.reparentTo(handObjParent)
        self.suit.setPlayRate(animationSpeed, animation_name)
        self.suit.play(animation_name)
        if hasattr(self.suit, 'uniqueName'):
            track_name = self.suit.uniqueName(track_name)
            particleCollId = self.suit.uniqueName(particleCollId)
        self.suitTrack = Sequence(name=track_name)
        self.suitTrack.append(Wait(delayUntilRelease))
        self.suitTrack.append(Func(self.releaseAttack))
        self.suitTrack.append(Wait(self.particleIvalDur))
        self.suitTrack.setDoneEvent(self.suitTrack.getName())
        self.acceptOnce(self.suitTrack.getDoneEvent(), self.finishedAttack)
        if startRightAway:
            self.suitTrack.start(ts)
 def load(self):
     spawn = random.choice(DGG.SpawnPoints)
     base.localAvatar.setPos(spawn)
     base.localAvatar.setHpr(0, 0, 0)
     self.soundPickUpBarrel = base.loadSfx("phase_6/audio/sfx/SZ_MM_gliss.mp3")
     self.soundDropOff = base.loadSfx("phase_4/audio/sfx/MG_sfx_travel_game_bell_for_trolley.mp3")
     self.setMinigameMusic("phase_4/audio/bgm/MG_Delivery.mp3")
     self.setDescription(
         "A new supply of Gags were just shipped to Toontown! "
         + "Run over to a truck with Gag barrels to take a barrel out. Then, carry it over to the Gag Shop. "
         + "Try to unload and deliver as many barrels as you can to the Gag Shop. "
         + "Watch out for the Cogs - they might try to snatch a barrel!"
     )
     self.setWinnerPrize(100)
     self.setLoserPrize(0)
     self.gagShop = loader.loadModel("phase_4/models/modules/gagShop_TT.bam")
     self.gagShop.reparentTo(base.render)
     self.gagShop.setY(-70)
     sphere = CollisionSphere(0, 0, 0, 3)
     sphere.setTangible(0)
     node = CollisionNode("MGDeliveryGagShop")
     node.addSolid(sphere)
     self.gagShopCollNP = self.gagShop.attachNewNode(node)
     self.world = loader.loadModel("phase_4/models/minigames/delivery_area.egg")
     self.world.setY(-5)
     self.world.reparentTo(base.render)
     self.sky = loader.loadModel("phase_3.5/models/props/TT_sky.bam")
     self.sky.reparentTo(base.camera)
     ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
     self.sky.node().setEffect(ce)
     self.sky.setZ(-20)
     self.skyUtil.startSky(self.sky)
     base.camera.setPos(20, 50, 30)
     base.camera.lookAt(20, 0, 7.5)
     DistributedMinigame.load(self)
 def generate(self):
     DistributedObject.DistributedObject.generate(self)
     loader = self.cr.playGame.hood.loader
     partyGate = loader.geom.find('**/partyGate_grp')
     if partyGate.isEmpty():
         self.notify.warning('Could not find partyGate_grp in loader.geom')
         return
     self.clockFlat = partyGate.find('**/clock_flat')
     collSphere = CollisionSphere(0, 0, 0, 6.9)
     collSphere.setTangible(1)
     self.partyGateSphere = CollisionNode('PartyGateSphere')
     self.partyGateSphere.addSolid(collSphere)
     self.partyGateCollNodePath = partyGate.find(
         '**/partyGate_stepsLocator').attachNewNode(self.partyGateSphere)
     self.__enableCollisions()
     self.toontownTimeGui = ServerTimeGui(partyGate,
                                          hourCallback=self.hourChange)
     self.toontownTimeGui.setPos(
         partyGate.find('**/clockText_locator').getPos() +
         Point3(0.0, 0.0, -0.2))
     self.toontownTimeGui.setHpr(
         partyGate.find('**/clockText_locator').getHpr())
     self.toontownTimeGui.setScale(12.0, 1.0, 26.0)
     self.toontownTimeGui.amLabel.setPos(-0.035, 0, -0.032)
     self.toontownTimeGui.amLabel.setScale(0.5)
     self.toontownTimeGui.updateTime()
     self.setupSignText()
 def load(self):
     spawn = random.choice(DGG.SpawnPoints)
     base.localAvatar.setPos(spawn)
     base.localAvatar.setHpr(0, 0, 0)
     self.soundPickUpBarrel = base.loadSfx('phase_6/audio/sfx/SZ_MM_gliss.ogg')
     self.soundDropOff = base.loadSfx('phase_4/audio/sfx/MG_sfx_travel_game_bell_for_trolley.ogg')
     self.setMinigameMusic('phase_4/audio/bgm/MG_Delivery.ogg')
     self.setDescription('A new supply of Gags were just shipped to Toontown! ' + 'Run over to a truck with Gag barrels to take a barrel out. Then, carry it over to the Gag Shop. ' + 'Try to unload and deliver as many barrels as you can to the Gag Shop. ' + 'Watch out for the Cogs - they might try to snatch a barrel!')
     self.setWinnerPrize(100)
     self.setLoserPrize(0)
     self.gagShop = loader.loadModel('phase_4/models/modules/gagShop_TT.bam')
     self.gagShop.reparentTo(base.render)
     self.gagShop.setY(-70)
     sphere = CollisionSphere(0, 0, 0, 3)
     sphere.setTangible(0)
     node = CollisionNode('MGDeliveryGagShop')
     node.addSolid(sphere)
     self.gagShopCollNP = self.gagShop.attachNewNode(node)
     self.world = loader.loadModel('phase_4/models/minigames/delivery_area.egg')
     self.world.setY(-5)
     self.world.reparentTo(base.render)
     self.world.find('**/ground').setBin('ground', 18)
     self.sky = loader.loadModel('phase_3.5/models/props/TT_sky.bam')
     self.sky.reparentTo(base.camera)
     ce = CompassEffect.make(NodePath(), CompassEffect.PRot | CompassEffect.PZ)
     self.sky.node().setEffect(ce)
     self.sky.setZ(-20)
     self.skyUtil.startSky(self.sky)
     base.camera.setPos(40, 50, 30)
     base.camera.lookAt(20, 0, 7.5)
     DistributedMinigame.load(self)
 def setupCollisions(self):
     sphere = CollisionSphere(0, 0, 0, 2)
     sphere.setTangible(0)
     node = CollisionNode(self.collisionName)
     node.addSolid(sphere)
     node.setCollideMask(CIGlobals.WallBitmask)
     self.collisionNode = self.attachNewNode(node)
 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.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 #8
0
    def announceGenerate(self):
        self.reparentTo(render)
        base.minigame.flags.append(self)
        self.flagMdl = loader.loadModel(
            'phase_4/models/minigames/flag_new.egg')
        self.flagMdl.reparentTo(render)
        self.flagMdl.find('**/flag').setTwoSided(1)
        self.flagMdl.find('**/flag_pole').setColor(self.pole_color)
        self.flagMdl.find('**/flag').setColor(self.colors[self.team])
        hideNodes = ['icon2', 'icon3']
        if self.team == GGG.Teams.BLUE:
            hideNodes = ['icon', 'icon1']
        for node in hideNodes:
            part = self.flagMdl.find('**/%s' % node)
            if part:
                part.removeNode()

        sphere = CollisionSphere(0, 0, 0, 4)
        sphere.setTangible(0)
        node = CollisionNode(self.uniqueName('flagpoint_colnode'))
        node.addSolid(sphere)
        node.setCollideMask(CIGlobals.WallBitmask)
        self.collNP = self.attachNewNode(node)
        sphere = CollisionSphere(0, 0, 0, 2)
        sphere.setTangible(0)
        node = CollisionNode(self.uniqueName('flag_colnode'))
        node.addSolid(sphere)
        node.setCollideMask(CIGlobals.WallBitmask)
        self.flagCollNP = self.flagMdl.attachNewNode(node)
        pos, hpr = base.minigame.loader.getFlagPoint_Point(self.team)
        self.setPos(pos)
        self.setHpr(hpr)
Beispiel #9
0
    def __init__(self, pos, modelName, maxHealth, maxSpeed, colliderName,
                 size):
        GameObject.__init__(
            self, pos, modelName, None, maxHealth, maxSpeed, colliderName,
            MASK_INTO_ENEMY | MASK_FROM_PLAYER | MASK_FROM_ENEMY, size)
        ArmedObject.__init__(self)

        self.colliderNP.node().setFromCollideMask(MASK_WALLS | MASK_FROM_ENEMY)

        Common.framework.pusher.addCollider(self.colliderNP, self.root)
        Common.framework.traverser.addCollider(self.colliderNP,
                                               Common.framework.pusher)

        colliderNode = CollisionNode("lock sphere")
        solid = CollisionSphere(0, 0, 0, size * 2)
        solid.setTangible(False)
        colliderNode.addSolid(solid)
        self.lockColliderNP = self.root.attachNewNode(colliderNode)
        self.lockColliderNP.setPythonTag(TAG_OWNER, self)
        colliderNode.setFromCollideMask(0)
        colliderNode.setIntoCollideMask(MASK_ENEMY_LOCK_SPHERE)

        self.setFlinchPool(10, 15)

        self.attackAnimsPerWeapon = {}

        self.flinchAnims = []
        self.flinchTimer = 0

        self.shields = []
        self.shieldDuration = 0.5

        self.movementNames = ["walk"]

        self.setupExplosion()
 def loadAttack(self):
     self.phone = loader.loadModel('phase_3.5/models/props/phone.bam')
     self.phone.setHpr(0, 0, 180)
     if self.suit.type == 'B':
         self.phone.setPos(0.7, 0.15, 0)
     else:
         if self.suit.type == 'C':
             self.phone.setPos(0.25, 0, 0)
     self.receiver = loader.loadModel('phase_3.5/models/props/receiver.bam')
     self.receiver.reparentTo(self.phone)
     self.cord = Rope()
     self.cord.ropeNode.setUseVertexColor(1)
     self.cord.ropeNode.setUseVertexThickness(1)
     self.cord.setup(3, ({'node': self.phone, 'point': (0.8, 0, 0.2), 'color': (0, 0, 0, 1), 'thickness': 1000}, {'node': self.phone, 'point': (2, 0, 0), 'color': (0, 0, 0, 1), 'thickness': 1000}, {'node': self.receiver, 'point': (1.1, 0.25, 0.5), 'color': (0, 0, 0, 1), 'thickness': 1000}), [])
     self.cord.setH(180)
     self.phoneSfx = base.audio3d.loadSfx('phase_3.5/audio/sfx/SA_hangup.ogg')
     base.audio3d.attachSoundToObject(self.phoneSfx, self.phone)
     self.hangupSfx = base.audio3d.loadSfx('phase_3.5/audio/sfx/SA_hangup_place_down.ogg')
     base.audio3d.attachSoundToObject(self.hangupSfx, self.phone)
     collSphere = CollisionSphere(0, 0, 0, 2)
     collSphere.setTangible(0)
     collNode = CollisionNode('phone_shootout')
     collNode.addSolid(collSphere)
     collNode.setCollideMask(CIGlobals.WallBitmask)
     self.collNP = self.phone.attachNewNode(collNode)
    def doAttack(self, particlePaths, track_name, particleCollId, animation_name, delayUntilRelease, animationSpeed=1, handObjPath=None, handObjParent=None, startRightAway=True, ts=0):
        for path in particlePaths:
            particle = ParticleLoader.loadParticleEffect(path)
            self.particles.append(particle)

        sphere = CollisionSphere(0, 0, 0, 1)
        sphere.setTangible(0)
        node = CollisionNode(particleCollId)
        node.addSolid(sphere)
        node.setCollideMask(CIGlobals.WallBitmask)
        self.targetX = self.attacksClass.target.getX(render)
        self.targetY = self.attacksClass.target.getY(render)
        self.targetZ = self.attacksClass.target.getZ(render)
        if len(self.particles) == 1:
            self.shootOutCollNP = self.particles[0].attachNewNode(node)
        else:
            self.shootOutCollNP = self.suit.attachNewNode(node)
        if handObjPath and handObjParent:
            self.handObj = loader.loadModel(handObjPath)
            self.handObj.reparentTo(handObjParent)
        self.suit.setPlayRate(animationSpeed, animation_name)
        self.suit.play(animation_name)
        if hasattr(self.suit, 'uniqueName'):
            track_name = self.suit.uniqueName(track_name)
            particleCollId = self.suit.uniqueName(particleCollId)
        self.suitTrack = Sequence(name=track_name)
        self.suitTrack.append(Wait(delayUntilRelease))
        self.suitTrack.append(Func(self.releaseAttack))
        self.suitTrack.append(Wait(self.particleIvalDur))
        self.suitTrack.setDoneEvent(self.suitTrack.getName())
        self.acceptOnce(self.suitTrack.getDoneEvent(), self.finishedAttack)
        if startRightAway:
            self.suitTrack.start(ts)
Beispiel #12
0
    def initSwitches(self):
        # Find switch armatures
        objects = self.level.findAllMatches('**/Switch')

        # Load switch anim
        switchAnimNode = loader.loadModel("Switch-Activate.egg")
        switchAnim = switchAnimNode.find("+AnimBundleNode").node().getBundle()

        self.switchControls = {}

        i = 0
        for object in objects:
            bundle = object.node().getBundle(0)
            control = bundle.bindAnim(switchAnim, ~0)

            switchsphere = CollisionSphere(0, 0, 0, 0.5)
            switchsphere.setTangible(False)
            switchColNP = object.getParent().attachNewNode(CollisionNode('switchActivation%d'%i))
            switchColNP.node().addSolid(switchsphere)
            self.switchControls.setdefault(object.getParent(), [control, switchColNP])
            switchName = object.getParent().getParent().getName()
            self.accept("playerCollision-in-switchActivation%d"%i,
                        self.__setActivateElement,
                        extraArgs=[True, switchName, "switch"])
            self.accept("playerCollision-out-switchActivation%d"%i,
                        self.__setActivateElement,
                        extraArgs=[False, switchName, "switch"])
            i+=1

        for key, value in self.switchControls.iteritems():
            value[0].pose(0)
 def setupCollisions(self):
     sphere = CollisionSphere(0, 0, 0, 2)
     sphere.setTangible(0)
     node = CollisionNode(self.collisionName)
     node.addSolid(sphere)
     node.setCollideMask(CIGlobals.WallBitmask)
     self.collisionNode = self.attachNewNode(node)
 def announceGenerate(self):
     DistributedNode.announceGenerate(self)
     self.capturePoint = loader.loadModel('phase_4/models/props/capture_point.bam')
     self.capturePoint.setScale(2.5)
     self.capturePoint.reparentTo(self)
     
     self.captureCircle = loader.loadModel('phase_4/models/minigames/ice_game_score_circle.bam')
     self.captureCircle.setAlphaScale(0.5)
     self.captureCircle.setTransparency(TransparencyAttrib.MAlpha)
     self.captureCircle.reparentTo(self)
     self.captureCircle.setPos(self.capturePoint.getPos(render))
     self.captureCircle.setX(self.captureCircle.getX() - 0.03)
     self.captureCircle.setY(self.captureCircle.getY() - 0.1)
     self.captureCircle.setZ(self.captureCircle.getZ() + 2.4)
     self.captureCircle.hide()
     self.captureCircle.setTextureOff(1)
     
     self.aoogahSfx = loader.loadSfx('phase_5/audio/sfx/AA_sound_aoogah.ogg')
     
     sphere = CollisionSphere(0, 0, 0, 4)
     sphere.setTangible(0)
     self.pointCollNode = CollisionNode(self.uniqueName('coll_node'))
     self.pointCollNode.addSolid(sphere)
     self.pointCollNode.setCollideMask(GGG.HILL_BITMASK)
     self.collNP = self.capturePoint.attachNewNode(self.pointCollNode)
     
     self.neutralCapTexture = 'phase_4/maps/neutral_capture_point.mat'
     self.redCapTexture = 'phase_4/maps/red_capture_point.mat'
     self.blueCapTexture = 'phase_4/maps/blue_capture_point.mat'
     self.defCapTexture = 'phase_4/maps/captured_capture_point.mat'
     
     self.reparentTo(render)
Beispiel #15
0
    def initChests(self):
        objects = self.level.findAllMatches('**/Box_long_looseLid')

        boxAnimNode = loader.loadModel("Box_long_looseLid-open.egg")
        boxAnim = boxAnimNode.find("+AnimBundleNode").node().getBundle()

        self.boxControls = {}

        i = 0
        for object in objects:
            bundle = object.node().getBundle(0)
            control = bundle.bindAnim(boxAnim, ~0)

            boxsphere = CollisionSphere(0, 0, 0, 1.0)
            boxsphere.setTangible(False)
            boxColNP = object.getParent().attachNewNode(CollisionNode('boxActivation%d'%i))
            boxColNP.node().addSolid(boxsphere)
            #boxColNP.show()
            self.boxControls.setdefault(object.getParent(), [control, boxColNP])
            boxName = object.getParent().getParent().getName()
            self.accept("playerCollision-in-boxActivation%d"%i,
                        self.__setActivateElement,
                        extraArgs=[True, boxName, "box"])
            self.accept("playerCollision-out-boxActivation%d"%i,
                        self.__setActivateElement,
                        extraArgs=[False, boxName, "box"])
            i+=1
Beispiel #16
0
 def __setupCollisions(self):
     sphere = CollisionSphere(0, 0, 0, 4)
     sphere.setTangible(0)
     collisionNode = CollisionNode(self.uniqueName('NPCToonSphere'))
     collisionNode.addSolid(sphere)
     collisionNode.setCollideMask(CIGlobals.WallBitmask)
     self.collisionNodePath = self.attachNewNode(collisionNode)
     self.collisionNodePath.setY(1.5)
 def __setupCollisions(self):
     sphere = CollisionSphere(0, 0, 0, 4)
     sphere.setTangible(0)
     collisionNode = CollisionNode(self.uniqueName('NPCToonSphere'))
     collisionNode.addSolid(sphere)
     collisionNode.setCollideMask(CIGlobals.WallBitmask)
     self.collisionNodePath = self.attachNewNode(collisionNode)
     self.collisionNodePath.setY(1.5)
Beispiel #18
0
    def getSprayTrack(self, origin, target, scaleUp, hold, scaleDown, horizScale = 1.0, vertScale = 1.0):
        base.localAvatar.stop(self.toonAnim)
        self.lastFrame = self.avatar.getCurrentFrame(self.toonAnim)
        track = Sequence()
        sprayProp = loader.loadModel(GagGlobals.SPRAY_MDL)
        sprayProp.setTwoSided(1)
        sprayScale = hidden.attachNewNode('spray-parent')
        sprayRot = hidden.attachNewNode('spray-rotate')
        sprayRot.setColor(GagGlobals.WATER_SPRAY_COLOR)
        sprayRot.setTransparency(1)
        collNode = CollisionNode('Collision')
        spraySphere = CollisionSphere(0, 0, 0, 1)
        spraySphere.setTangible(0)
        collNode.addSolid(spraySphere)
        collNode.setCollideMask(CIGlobals.WallBitmask)
        sprayNP = sprayRot.attachNewNode(collNode)
        sprayNP.setY(1)
        self.sprayNP = sprayNP
        event = CollisionHandlerEvent()
        event.set_in_pattern('%fn-into')
        event.set_out_pattern('%fn-out')
        base.cTrav.add_collider(sprayNP, event)
        self.avatar.acceptOnce(sprayNP.node().getName() + '-into', self.onCollision)

        def showSpray(sprayScale, sprayProp, origin, target):
            objects = [sprayRot, sprayScale, sprayProp]
            for item in objects:
                index = objects.index(item)
                if index == 0:
                    item.reparentTo(self.sprayJoint)
                    item.setPos(self.sprayJoint.getPos(render))
                    item.setHpr(self.sprayJoint.getHpr(render))
                    item.setP(0)
                else:
                    item.reparentTo(objects[index - 1])
                item.clearMat()

        track.append(Func(showSpray, sprayScale, sprayProp, origin, target))
        self.spray = sprayRot

        def calcTargetScale():
            distance = Vec3(target - origin).length()
            yScale = distance / GagGlobals.SPRAY_LEN
            targetScale = Point3(yScale * horizScale, yScale, yScale * vertScale)
            return targetScale

        track.append(Parallel(LerpScaleInterval(sprayScale, scaleUp, calcTargetScale, startScale=GagGlobals.PNT3NEAR0), sprayNP.posInterval(0.25, self.spray.getPos(render) + Point3(0, 50, 0), startPos=self.spray.getPos(render) + Point3(0, 5, 0))))
        track.append(Wait(hold))
        track.append(Func(self.handleMiss))
        track.append(LerpScaleInterval(sprayScale, 0.75, GagGlobals.PNT3NEAR0))

        def hideSpray():
            (lambda prop: prop.removeNode(), [sprayProp, sprayRot, sprayScale])

        track.append(Func(hideSpray))
        track.append(Func(self.completeSquirt))
        return track
Beispiel #19
0
 def __initializeEventSphere(self):
     sphere = CollisionSphere(0, 0, 0, 2)
     sphere.setTangible(0)
     node = CollisionNode(self.uniqueName('DEagleSuit-eventSphere'))
     node.addSolid(sphere)
     node.setCollideMask(CIGlobals.WallBitmask)
     np = self.attachNewNode(node)
     np.setSz(2.5)
     np.setZ(5.5)
     self.eventSphereNodePath = np
Beispiel #20
0
 def __initShopCollisions(self, colName):
     self.notify.debug('Setting up shop collisions')
     shopSphere = CollisionSphere(0, 0, 0, 5)
     shopSphere.setTangible(0)
     shopNode = CollisionNode(colName)
     shopNode.addSolid(shopSphere)
     shopNode.setCollideMask(CIGlobals.WallBitmask)
     self.shopNP = self.attachNewNode(shopNode)
     self.shopNP.setZ(3)
     self.acceptOnce('enter' + self.shopNP.node().getName(), self.__handleShopCollision)
Beispiel #21
0
 def __initCollisions(self, name):
     self.notify.debug("Initializing collision sphere...")
     ss = CollisionSphere(0, 0, 0, 5)
     ss.setTangible(0)
     snode = CollisionNode(name)
     snode.add_solid(ss)
     snode.set_collide_mask(CIGlobals.WallBitmask)
     self.snp = self.attach_new_node(snode)
     self.snp.setZ(3)
     self.acceptOnce("enter" + self.snp.node().getName(), self.__handleEnterCollisionSphere)
 def __initializeEventSphere(self):
     sphere = CollisionSphere(0, 0, 0, 2)
     sphere.setTangible(0)
     node = CollisionNode(self.uniqueName('DEagleSuit-eventSphere'))
     node.addSolid(sphere)
     node.setCollideMask(CIGlobals.WallBitmask)
     np = self.attachNewNode(node)
     np.setSz(2.5)
     np.setZ(5.5)
     self.eventSphereNodePath = np
 def __initInteractCollisions(self, colName):
     self.notify.debug('Setting up Coach collisions')
     collSphere = CollisionSphere(0, 0, 0, 5)
     collSphere.setTangible(0)
     collNode = CollisionNode(colName)
     collNode.addSolid(collSphere)
     collNode.setCollideMask(CIGlobals.WallBitmask)
     self.coachNP = self.attachNewNode(collNode)
     self.coachNP.setZ(3)
     self.acceptOnce('enter' + self.coachNP.node().getName(),
                     self.__handleCollision)
 def createThrowGag(self, gag):
     throwGag = CogdoMazePlayer.createThrowGag(self, gag)
     collSphere = CollisionSphere(0, 0, 0, 0.5)
     collSphere.setTangible(0)
     name = Globals.GagCollisionName
     collNode = CollisionNode(name)
     collNode.setFromCollideMask(ToontownGlobals.PieBitmask)
     collNode.addSolid(collSphere)
     colNp = throwGag.attachNewNode(collNode)
     base.cTrav.addCollider(colNp, self.gagHandler)
     return throwGag
Beispiel #25
0
 def checkpointCreator(self, posx, posy, posz, radius):
     cp = loader.loadModel('models/Campfire/logs')
     cp.setPos(posx,posy, posz)
     cp.reparentTo(render)
     checkpoint = CollisionSphere(cp.getX(),cp.getY(),cp.getZ(),radius)
     checkpoint.setTangible(0)
     checkpointCol = CollisionNode('checkpointCol')
     checkpointCol.addSolid(checkpoint)
     checkpointCol.setIntoCollideMask(BitMask32.bit(2))
     checkpointColNp = self.render.attachNewNode(checkpointCol)
     self.cTrav.addCollider(checkpointColNp, self.wallHandler)
Beispiel #26
0
 def __initShopCollisions(self, colName):
     self.notify.debug('Setting up shop collisions')
     shopSphere = CollisionSphere(0, 0, 0, 5)
     shopSphere.setTangible(0)
     shopNode = CollisionNode(colName)
     shopNode.addSolid(shopSphere)
     shopNode.setCollideMask(CIGlobals.WallBitmask)
     self.shopNP = self.attachNewNode(shopNode)
     self.shopNP.setZ(3)
     self.acceptOnce('enter' + self.shopNP.node().getName(),
                     self.__handleShopCollision)
 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
     else:
         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 #28
0
    def generateCollisionObject(self):
        colliderNode = CollisionNode("projectile")
        solid = CollisionSphere(0, 0, 0, self.size)
        solid.setTangible(False)
        colliderNode.addSolid(solid)
        self.colliderNP = self.root.attachNewNode(colliderNode)
        self.colliderNP.setPythonTag(TAG_OWNER, self)
        colliderNode.setFromCollideMask(MASK_WALLS | self.mask)
        colliderNode.setIntoCollideMask(0)

        Common.framework.pusher.addCollider(self.colliderNP, self.root)
        Common.framework.traverser.addCollider(self.colliderNP,
                                               Common.framework.pusher)
Beispiel #29
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)
Beispiel #30
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
 def __initCollisions(self):
     collSphere = CollisionSphere(0, 0, 0, Globals.PlayerCollisionRadius)
     collSphere.setTangible(0)
     self.mazeCollisionName = Globals.LocalPlayerCollisionName
     collNode = CollisionNode(self.mazeCollisionName)
     collNode.addSolid(collSphere)
     collNodePath = self.toon.attachNewNode(collNode)
     collNodePath.hide()
     handler = CollisionHandlerEvent()
     handler.addInPattern('%fn-into-%in')
     base.cTrav.addCollider(collNodePath, handler)
     self.handler = handler
     self._collNodePath = collNodePath
Beispiel #32
0
 def buildProjCollisions(self):
     gagSph = CollisionSphere(0, 0, 0, 1)
     gagSph.setTangible(0)
     gagNode = CollisionNode('projSensor')
     gagNode.addSolid(gagSph)
     gagNP = self.gag.attach_new_node(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.set_in_pattern('%fn-into')
     event.set_out_pattern('%fn-out')
     base.cTrav.addCollider(gagNP, event)
 def __initCollisions(self, name):
     self.notify.debug('Initializing collision sphere...')
     numSlots = len(self.circles)
     ss = CollisionSphere(0, 0, 0, self.numPlayers2SphereRadius[numSlots])
     ss.setTangible(0)
     snode = CollisionNode(name)
     snode.add_solid(ss)
     snode.set_collide_mask(CIGlobals.WallBitmask)
     self.snp = self.attach_new_node(snode)
     self.snp.setZ(3)
     self.snp.setY(self.numPlayers2SphereY[numSlots])
     self.snp.setSx(self.numPlayers2SphereSx[numSlots])
     self.snp.setSy(self.numPlayers2SphereSy[numSlots])
     self.acceptOnce('enter' + self.snp.node().getName(), self.__handleEnterCollisionSphere)
 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)
Beispiel #35
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)
Beispiel #36
0
 def __initCollisions(self, name):
     self.notify.debug('Initializing collision sphere...')
     numSlots = len(self.circles)
     ss = CollisionSphere(0, 0, 0, self.numPlayers2SphereRadius[numSlots])
     ss.setTangible(0)
     snode = CollisionNode(name)
     snode.add_solid(ss)
     snode.set_collide_mask(CIGlobals.WallBitmask)
     self.snp = self.attach_new_node(snode)
     self.snp.setZ(3)
     self.snp.setY(self.numPlayers2SphereY[numSlots])
     self.snp.setSx(self.numPlayers2SphereSx[numSlots])
     self.snp.setSy(self.numPlayers2SphereSy[numSlots])
     self.acceptOnce('enter' + self.snp.node().getName(), self.__handleEnterCollisionSphere)
Beispiel #37
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
 def loadCollision(self):
     collTube = CollisionTube(0.0, 0.0, 0.0, 0.0, 0.0, 6.0, 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, 0.0, 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)
Beispiel #39
0
 def buildProjCollisions(self):
     gagSph = CollisionSphere(0, 0, 0, 1)
     gagSph.setTangible(0)
     gagNode = CollisionNode('projSensor')
     gagNode.addSolid(gagSph)
     gagNP = self.gag.attach_new_node(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.set_in_pattern('%fn-into')
     event.set_out_pattern('%fn-out')
     base.cTrav.addCollider(gagNP, event)
 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)
Beispiel #41
0
 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 #42
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 #44
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 #45
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 #46
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 #47
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 #48
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 #49
0
    def __init__(self):
        FSM.__init__(self, "FSM-Golem")
        random.seed()
        self.golem = loader.loadModel("Golem")
        self.golem = Actor("Golem", {
            "Idle":"Golem-Idle",
            "Walk":"Golem-Walk",
            "Attack":"Golem-Attack",
            "Destroyed":"Golem-Destroyed"})
        self.golem.setBlend(frameBlend = True)
        golemViewSphere = CollisionSphere(0, 0, 0.5, 6)
        golemViewSphere.setTangible(False)
        golemViewColNP = self.golem.attachNewNode(CollisionNode('golemViewField'))
        golemViewColNP.node().addSolid(golemViewSphere)
        golemHitSphere = CollisionSphere(0, 0, 0.5, 1)
        golemHitColNP = self.golem.attachNewNode(CollisionNode('golemHitField'))
        golemHitColNP.node().addSolid(golemHitSphere)

        # a collision segment to check attacks
        self.attackCheckSegment = CollisionSegment(0, 0, 1, 0, -1.3, 1)
        self.golemAttackRay = self.golem.attachNewNode(CollisionNode("golemAttackCollision"))
        self.golemAttackRay.node().addSolid(self.attackCheckSegment)
        self.golemAttackRay.node().setIntoCollideMask(0)
        self.attackqueue = CollisionHandlerQueue()
        base.cTrav.addCollider(self.golemAttackRay, self.attackqueue)

        attackAnim = self.golem.actorInterval("Attack", playRate = 2)
        self.AttackSeq = Parallel(
            attackAnim,
            Sequence(
                Wait(0.5),
                Func(self.ceckAttack)
            ))

        self.lookatFloater = NodePath(PandaNode("golemTracker"))
        self.lookatFloater.setPos(self.golem, 0, 0, 3.4)
        self.lookatFloater.hide()
        self.lookatFloater.reparentTo(render)
        self.trackerObject = loader.loadModel("misc/Pointlight")
        self.trackerObject.setColor(0, 1, 0)
        self.trackerObject.setScale(0.25)
        self.trackerObject.reparentTo(self.lookatFloater)
Beispiel #50
0
 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')
Beispiel #51
0
 def loadAttack(self):
     self.pen = loader.loadModel('phase_5/models/props/pen.bam')
     self.pen.reparentTo(self.suit.find('**/joint_Rhold'))
     self.sprayParticle = ParticleLoader.loadParticleEffect('phase_5/etc/penSpill.ptf')
     self.spray = loader.loadModel('phase_3.5/models/props/spray.bam')
     self.spray.setColor(VBase4(0, 0, 0, 1))
     self.splat = Actor('phase_3.5/models/props/splat-mod.bam', {'chan': 'phase_3.5/models/props/splat-chan.bam'})
     self.splat.setColor(VBase4(0, 0, 0, 1))
     self.sprayScaleIval = LerpScaleInterval(self.spray, duration=0.3, scale=(1, 20, 1), startScale=(1, 1, 1))
     sphere = CollisionSphere(0, 0, 0, 0.5)
     sphere.setTangible(0)
     if hasattr(self.suit, 'uniqueName'):
         collName = self.suit.uniqueName('fountainPenCollNode')
     else:
         collName = 'fountainPenCollNode'
     collNode = CollisionNode(collName)
     collNode.addSolid(sphere)
     collNode.setCollideMask(CIGlobals.WallBitmask)
     self.wsnp = self.spray.attachNewNode(collNode)
     self.wsnp.setY(1)
Beispiel #52
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 #53
0
 def makeNodePath(self):
     self.nodePath = NodePath('treasure')
     if self.billboard:
         self.nodePath.setBillboardPointEye()
     self.nodePath.setScale(0.9 * self.scale)
     self.treasure = self.nodePath.attachNewNode('treasure')
     if self.shadow:
         if not self.dropShadow:
             self.dropShadow = loader.loadModel('phase_3/models/props/drop_shadow.bam')
             self.dropShadow.setColor(0, 0, 0, 0.5)
             self.dropShadow.setPos(0, 0, 0.025)
             self.dropShadow.setScale(0.4 * self.scale)
             self.dropShadow.flattenLight()
         self.dropShadow.reparentTo(self.nodePath)
     collSphere = CollisionSphere(0, 0, 0, self.sphereRadius)
     collSphere.setTangible(0)
     collNode = CollisionNode(self.uniqueName('treasureSphere'))
     collNode.setIntoCollideMask(CIGlobals.WallBitmask)
     collNode.addSolid(collSphere)
     self.collNodePath = self.nodePath.attachNewNode(collNode)
     self.collNodePath.stash()
Beispiel #54
0
 def loadAttack(self):
     self.weapon = loader.loadModel('phase_5/models/props/bounced-check.bam')
     self.weapon.setScale(10)
     self.weapon.setTwoSided(1)
     self.bounceSound = base.audio3d.loadSfx('phase_5/audio/sfx/SA_bounce_check_bounce.mp3')
     base.audio3d.attachSoundToObject(self.bounceSound, self.suit)
     cSphere = CollisionSphere(0, 0, 0, 0.1)
     cSphere.setTangible(0)
     if hasattr(self, 'uniqueName'):
         name = self.uniqueName('bounced_check_collision')
     else:
         name = 'bounced_check_collision'
     cNode = CollisionNode(name)
     cNode.addSolid(cSphere)
     cNode.setFromCollideMask(CIGlobals.FloorBitmask)
     cNP = self.weapon.attachNewNode(cNode)
     cNP.setCollideMask(BitMask32(0))
     self.event = CollisionHandlerEvent()
     self.event.setInPattern('%fn-into')
     self.event.setOutPattern('%fn-out')
     base.cTrav.addCollider(cNP, self.event)
     self.wsnp = cNP
     self.wsnp.show()
Beispiel #55
0
    def generate(self):
        DistributedNode.generate(self)
        self.cart = loader.loadModel(self.cartModelPath)
        self.cart.reparentTo(self)
        self.cart.setH(180)
        heads = []
        for head in CIGlobals.SuitBodyData.keys():
            if CIGlobals.SuitBodyData[head][0] != 'B':
                heads.append(head)

        head = random.choice(heads)
        suitType = CIGlobals.SuitBodyData[head][0]
        suitDept = CIGlobals.SuitBodyData[head][1]
        self.suitInCar = Suit()
        self.suitInCar.generateSuit(suitType, head, suitDept, 137, 0, False)
        self.suitInCar.loop('sit')
        self.suitInCar.disableRay()
        self.suitInCar.setScale(0.7)
        self.suitInCar.setH(180)
        self.suitInCar.setPos(0, -1, -1.5)
        self.suitInCar.reparentTo(self.cart.find('**/seat1'))
        self.soundEngineLoop = base.audio3d.loadSfx('phase_6/audio/sfx/KART_Engine_loop_0.wav')
        base.audio3d.attachSoundToObject(self.soundEngineLoop, self)
        base.playSfx(self.soundEngineLoop, looping=1)
        self.soundDriveByHorn = base.audio3d.loadSfx(self.honkSfxPath)
        base.audio3d.attachSoundToObject(self.soundDriveByHorn, self)
        self.soundDriveBy = base.audio3d.loadSfx('phase_14/audio/sfx/cogtropolis_citycar_driveby.mp3')
        base.audio3d.attachSoundToObject(self.soundDriveBy, self)
        sphere = CollisionSphere(0, 0, 0, 2.5)
        sphere.setTangible(0)
        node = CollisionNode(self.uniqueName('cartSphere'))
        node.setCollideMask(CIGlobals.WallBitmask)
        node.addSolid(sphere)
        self.collNodePath = self.attachNewNode(node)
        self.collNodePath.setZ(1.5)
        self.collNodePath.setSy(2.0)
        self.collNodePath.setSx(1.75)
Beispiel #56
0
    def showToonThrowingPie(self, avId, timestamp, heading, pos):
        toon = self.getAvatar(avId)
        if toon:
            tossTrack, pieTrack, flyPie = self.getTossPieInterval(toon, pos[0], pos[1], pos[2], heading, 0, 0, 0)

            def removePieFromTraverser(flyPie = flyPie):
                if base.cTrav:
                    if flyPie:
                        base.cTrav.removeCollider(flyPie)

            if avId == self.localAvId:
                flyPie.setTag('throwerId', str(avId))
                collSphere = CollisionSphere(0, 0, 0, 0.5)
                collSphere.setTangible(0)
                name = 'PieSphere-%d' % avId
                collSphereName = self.uniqueName(name)
                collNode = CollisionNode(collSphereName)
                collNode.setFromCollideMask(ToontownGlobals.PieBitmask)
                collNode.addSolid(collSphere)
                colNp = flyPie.attachNewNode(collNode)
                colNp.show()
                base.cTrav.addCollider(colNp, self.pieHandler)
                self.accept('pieHit-' + collSphereName, self.handlePieHitting)

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

            newTossTrack = Sequence(tossTrack, Func(matchRunningAnim))
            pieTrack = Parallel(newTossTrack, pieTrack)
            elapsedTime = globalClockDelta.localElapsedTime(timestamp)
            if elapsedTime < 16.0 / 24.0:
                elapsedTime = 16.0 / 24.0
            pieTrack.start(elapsedTime)
            self.toonPieTracks[avId] = pieTrack
Beispiel #57
0
class ThrowAttack(Attack):
    notify = directNotify.newCategory('ThrowAttack')
    attack = 'throw'

    def __init__(self, attacksClass, suit):
        Attack.__init__(self, attacksClass, suit)
        self.weapon_state = None
        self.weapon = None
        self.wss = None
        self.wsnp = None
        self.suitTrack = None
        self.weaponSfx = None
        self.throwTrajectory = None
        self.targetX = None
        self.targetY = None
        self.targetZ = None
        self.startNP = None
        return

    def handleWeaponCollision(self, entry):
        if self.suit:
            self.suit.sendUpdate('toonHitByWeapon', [self.getAttackId(self.attack), base.localAvatar.doId])
            base.localAvatar.b_handleSuitAttack(self.getAttackId(self.attack), self.suit.doId)
            self.suit.b_handleWeaponTouch()

    def doAttack(self, weapon_path, weapon_scale, track_name, animation_name, collsphere_radius, weapon_coll_id, weapon_h = 0, weapon_p = 0, weapon_r = 0, weapon_x = 0, weapon_y = 0, weapon_z = 0, ts = 0):
        self.weapon_state = 'start'
        if hasattr(self.suit, 'uniqueName'):
            track_name = self.suit.uniqueName(track_name)
            weapon_coll_id = self.suit.uniqueName(weapon_coll_id)
        self.weapon = loader.loadModel(weapon_path)
        self.weapon.setScale(weapon_scale)
        self.weapon.setHpr(weapon_h, weapon_p, weapon_r)
        self.weapon.setPos(weapon_x, weapon_y, weapon_z)
        self.wss = CollisionSphere(0, 0, 0, collsphere_radius)
        self.wss.setTangible(0)
        self.targetX = self.attacksClass.target.getX(render)
        self.targetY = self.attacksClass.target.getY(render)
        self.targetZ = self.attacksClass.target.getZ(render)
        self.suitTrack = Sequence(name=track_name)
        if self.attack not in ('glowerpower',):
            self.weapon.reparentTo(self.suit.find('**/joint_Rhold'))
            self.suitTrack.append(Wait(1.2))
            self.suitTrack.append(Func(self.suit.setPlayRate, 1.0, animation_name))
            if self.suit.type == 'C':
                self.suitTrack.append(Wait(0))
            else:
                self.suitTrack.append(Wait(0.7))
            self.suit.setPlayRate(2.0, animation_name)
            self.suitTrack.append(Func(self.throwObject))
            self.suitTrack.append(Wait(1.0))
            self.suitTrack.append(Func(self.delWeapon))
        else:
            self.suitTrack.append(Wait(1))
            self.suitTrack.append(Func(self.throwObject))
            self.suitTrack.append(Wait(0.5))
            self.suitTrack.append(Func(self.delWeapon))
        self.suit.play(animation_name)
        wsnode = CollisionNode(weapon_coll_id)
        wsnode.addSolid(self.wss)
        wsnode.setCollideMask(CIGlobals.WallBitmask)
        self.wsnp = self.weapon.attachNewNode(wsnode)
        self.suitTrack.setDoneEvent(self.suitTrack.getName())
        self.acceptOnce(self.suitTrack.getDoneEvent(), self.finishedAttack)
        self.suitTrack.delayDelete = DelayDelete.DelayDelete(self.suit, track_name)
        self.suitTrack.start(ts)

    def playWeaponSound(self):
        if self.weapon and self.weaponSfx:
            base.audio3d.attachSoundToObject(self.weaponSfx, self.suit)
            self.weaponSfx.play()

    def throwObject(self, projectile = True):
        if not self.weapon:
            return
        self.acceptOnce('enter' + self.wsnp.node().getName(), self.handleWeaponCollision)
        self.playWeaponSound()
        if self.weapon:
            self.weapon.wrtReparentTo(render)
            self.weapon.setHpr(Vec3(0, 0, 0))
        if self.attack not in ('glowerpower',):
            parent = self.suit.find('**/joint_Rhold')
        else:
            parent = self.suit.find('**/joint_head')
        startNP = parent.attachNewNode('startNp')
        startNP.lookAt(render, self.targetX, self.targetY, self.targetZ)
        pathNP = NodePath('throwPath')
        pathNP.reparentTo(startNP)
        pathNP.setScale(render, 1.0)
        pathNP.setPos(0, 50, 0)
        if self.attack in ('clipontie', 'powertie', 'halfwindsor'):
            self.weapon.setHpr(pathNP.getHpr(render))
        if projectile == True:
            self.throwTrajectory = ProjectileInterval(self.weapon, startPos=self.suit.find('**/joint_Rhold').getPos(render), endPos=pathNP.getPos(render), gravityMult=0.7, duration=1.0)
        else:
            self.weapon.setH(pathNP.getH(render))
            self.throwTrajectory = LerpPosInterval(self.weapon, duration=0.5, pos=pathNP.getPos(render), startPos=startNP.getPos(render) + (0, 3, 0))
        self.throwTrajectory.start()
        self.weapon_state = 'released'
        startNP.removeNode()
        del startNP
        pathNP.removeNode()
        del pathNP

    def interruptAttack(self):
        if self.throwTrajectory:
            if self.throwTrajectory.isStopped():
                self.delWeapon()

    def handleWeaponTouch(self):
        if self.throwTrajectory:
            self.throwTrajectory.pause()
            self.throwTrajectory = None
        self.delWeapon()
        return

    def delWeapon(self):
        if self.weapon:
            self.weapon.removeNode()
            self.weapon = None
        return

    def cleanup(self):
        Attack.cleanup(self)
        self.targetX = None
        self.targetY = None
        self.targetZ = None
        self.weapon_state = None
        if self.weaponSfx:
            self.weaponSfx.stop()
            self.weaponSfx = None
        if self.throwTrajectory:
            self.throwTrajectory.pause()
            self.throwTrajectory = None
        self.delWeapon()
        self.wss = None
        if self.wsnp:
            self.wsnp.node().clearSolids()
            self.wsnp.removeNode()
            self.wsnp = None
        return