def createHood(self, loadStorage = 1, AI = 0): if loadStorage: loadDNAFile(self.dnaStore, 'phase_4/dna/storage.dna') loadDNAFile(self.dnaStore, 'phase_4/dna/storage_TT.dna') loadDNAFile(self.dnaStore, 'phase_4/dna/storage_TT_sz.dna') loadDNAFile(self.dnaStore, 'phase_5/dna/storage_town.dna') loadDNAFile(self.dnaStore, 'phase_5/dna/storage_TT_town.dna') self.node = loadDNAFile(self.dnaStore, 'phase_4/dna/toontown_central_sz.dna') if self.node.getNumParents() == 1: self.geom = NodePath(self.node.getParent(0)) self.geom.reparentTo(hidden) else: self.geom = hidden.attachNewNode(self.node) gsg = base.win.getGsg() if gsg: self.geom.prepareScene(gsg) self.geom.setName('toontown_central') self.geom.find('**/hill').setTransparency(TransparencyAttrib.MBinary, 1) self.createSky('tt') base.hoodBGM = base.loadMusic('phase_4/audio/bgm/TC_nbrhood.ogg') base.hoodBGM.setVolume(0.25) base.hoodBGM.setLoop(True) base.hoodBGM.play() self.clerk_node = render.attach_new_node('clerk_node') self.clerk_node.set_pos(-80, -85.57, 0.5) self.clerk_node.set_h(165.07) self.geom.find('**/toontown_central').setCollideMask(BitMask32.allOff()) self.geom.find('**/coll_sidewalk').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/collision_1').node().setIntoCollideMask(CIGlobals.WallBitmask) self.geom.find('**/coll_mainFoolr').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/left_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/right_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_bridge_floor').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_bridge').node().setIntoCollideMask(CIGlobals.WallBitmask) self.geom.find('**/coll_r_stair').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_l_stair_2').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_l_stairend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_r_satirend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_plaza').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_hedges').node().setIntoCollideMask(CIGlobals.WallBitmask) self.coll_list = ['coll_sidewalk', 'collision_1', 'coll_mainFoolr', 'left_ear', 'right_ear', 'coll_bridge_floor', 'coll_bridge', 'coll_r_stair', 'coll_l_stair_2', 'coll_l_stairend_1', 'coll_r_stairend_1', 'coll_plaza', 'coll_hedges'] self.geom.reparentTo(render) self.telescope = Actor(self.geom.find('**/*animated_prop_HQTelescopeAnimatedProp*'), {'chan': 'phase_3.5/models/props/HQ_telescope-chan.bam'}, copy=0) self.telescope.reparentTo(self.geom.find('**/*toon_landmark_hqTT*')) self.createLights(1, 1, 1) taskMgr.add(self.telescopeTask, 'telescopeTask') self.isLoaded = 1 messenger.send('loadedHood')
def generate(self): DistributedObject.DistributedObject.generate(self) if self.butterfly: return self.butterfly = Actor.Actor() self.butterfly.loadModel('phase_4/models/props/SZ_butterfly-mod.bam') self.butterfly.loadAnims({ 'flutter': 'phase_4/models/props/SZ_butterfly-flutter.bam', 'glide': 'phase_4/models/props/SZ_butterfly-glide.bam', 'land': 'phase_4/models/props/SZ_butterfly-land.bam' }) index = self.doId % len(self.wingTypes) chosenType = self.wingTypes[index] node = self.butterfly.getGeomNode() for type in self.wingTypes: wing = node.find('**/' + type) if type != chosenType: wing.removeNode() else: if index == 0 or index == 1: color = self.yellowColors[self.doId % len(self.yellowColors)] elif index == 2 or index == 3: color = self.whiteColors[self.doId % len(self.whiteColors)] elif index == 4: color = self.paleYellowColors[self.doId % len(self.paleYellowColors)] else: color = Vec4(1, 1, 1, 1) wing.setColor(color) self.butterfly2 = Actor.Actor(other=self.butterfly) self.butterfly.enableBlend(blendType=PartBundle.BTLinear) self.butterfly.loop('flutter') self.butterfly.loop('land') self.butterfly.loop('glide') rng = RandomNumGen.RandomNumGen(self.doId) playRate = 0.6 + 0.8 * rng.random() self.butterfly.setPlayRate(playRate, 'flutter') self.butterfly.setPlayRate(playRate, 'land') self.butterfly.setPlayRate(playRate, 'glide') self.butterfly2.setPlayRate(playRate, 'flutter') self.butterfly2.setPlayRate(playRate, 'land') self.butterfly2.setPlayRate(playRate, 'glide') self.glideWeight = rng.random() * 2 lodNode = LODNode('butterfly-node') lodNode.addSwitch(100, 40) lodNode.addSwitch(40, 0) self.butterflyNode = NodePath(lodNode) self.butterfly2.setH(180.0) self.butterfly2.reparentTo(self.butterflyNode) self.butterfly.setH(180.0) self.butterfly.reparentTo(self.butterflyNode) self.__initCollisions() self.dropShadow = loader.loadModel('phase_3/models/props/drop_shadow') self.dropShadow.setColor(0, 0, 0, 0.3) self.dropShadow.setPos(0, 0.1, -0.05) self.dropShadow.setScale(self.shadowScaleBig) self.dropShadow.reparentTo(self.butterfly)
def makeNodePath(self): self.nodePath = Actor.Actor() self.chair = self.nodePath.attachNewNode('myChair')
def makeNodePath(self): self.nodePath = Actor.Actor() self.gavel = self.nodePath.attachNewNode('myGavel')
__all__ = [] if __name__ == "__main__": from direct.showbase.ShowBase import ShowBase from panda3d.core import * from .IntervalGlobal import * from direct.actor.Actor import * from direct.directutil import Mopath base = ShowBase() boat = loader.loadModel('models/misc/smiley') boat.reparentTo(render) donald = Actor() donald.loadModel("phase_6/models/char/donald-wheel-1000") donald.loadAnims({"steer": "phase_6/models/char/donald-wheel-wheel"}) donald.reparentTo(boat) dock = loader.loadModel('models/misc/smiley') dock.reparentTo(render) sound = loader.loadSfx('phase_6/audio/sfx/SZ_DD_waterlap.mp3') foghorn = loader.loadSfx('phase_6/audio/sfx/SZ_DD_foghorn.mp3') mp = Mopath.Mopath() mp.loadFile(Filename('phase_6/paths/dd-e-w')) # Set up the boat boatMopath = MopathInterval(mp, boat, 'boatpath')
def createFish(self, fishcode): loadBase = 'phase_4/models/char/' if fishcode is 0: fish = Actor.Actor('phase_4/models/char/clownFish-zero.bam', {'anim': loadBase + 'clownFish-swim.bam'}) fish.name = 'clown' elif fishcode is 1: fish = Actor.Actor( 'phase_4/models/char/PBJfish-zero.bam', {'anim': 'phase_4/models/char/PBJfish-swim.bam'}) fish.name = 'pbj' elif fishcode is 2: fish = Actor.Actor( 'phase_4/models/char/BearAcuda-zero.bam', {'anim': 'phase_4/models/char/BearAcuda-swim.bam'}) fish.name = 'bear' elif fishcode is 3: fish = Actor.Actor(loadBase + 'balloonFish-zero.bam', {'anim': loadBase + 'balloonFish-swim.bam'}) fish.name = 'balloon' elif fishcode is 4: fish = Actor.Actor(loadBase + 'nurseShark-zero.bam', {'anim': loadBase + 'nurseShark-swim.bam'}) fish.name = 'nurse' elif fishcode is 5: fish = Actor.Actor(loadBase + 'pianoTuna-zero.bam', {'anim': loadBase + 'pianoTuna-swim.bam'}) fish.name = 'piano' else: return fish.active = 1 fish.direction = self.direction idCode = self.getUniqueNumber() fish.code = str(self.spawnId) + str(idCode) self.fishArray[idCode] = fish fish.reparentTo(render) fish.setScale(1) fish.moveLerp = Sequence() if fish.name == 'clown': fish.setH(90 * self.direction) fish.loop('anim') cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.2) elif fish.name == 'pbj': fish.setH(15 * self.direction) fish.loop('anim') cSphere = CollisionSphere(0.0, 0.0, 0.0, 1) elif fish.name == 'balloon': fish.setH(0) fish.loop('anim', fromFrame=0, toFrame=94) fish.setScale(2) cSphere = CollisionSphere(0.0, 0.0, 0.0, 0.2) elif fish.name == 'bear': fish.setH(90 * self.direction) cSphere = CollisionSphere(0.0, -1.0, 3.5, 3.0) fish.loop('anim') fish.setScale(0.4, 1.7, 1.7) elif fish.name == 'nurse': fish.setH(90 * self.direction) cSphere = CollisionSphere(0.0, -1.0, 0.0, 1) fish.setScale(0.5, 1.7, 1.7) fish.loop('anim') elif fish.name == 'mackerel': fish.setH(90 * self.direction) cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.5) fish.loop('anim', fromFrame=36, toFrame=80) elif fish.name == 'piano': fish.loop('anim') fish.setScale(1.4) cSphere = CollisionSphere(0, 0, 0, 1) fishSoundName = 'Piano_Tuna.ogg' if self.direction is -1: fish.setH(0) else: fish.setH(180) cSphere.setTangible(0) fish.offset = 0 cSphereNode = CollisionNode('fc' + str(fish.code)) cSphereNode.addSolid(cSphere) cSphereNode.setFromCollideMask(BitMask32.allOff()) cSphereNode.setIntoCollideMask(DivingGameGlobals.CollideMask) cSphereNodePath = fish.attachNewNode(cSphereNode) self.accept('into-fc' + str(fish.code), self.__handleFishCollide) fish.moveloop = Sequence( Wait(4), LerpScaleInterval(fish, startScale=1, scale=3, duration=1), Wait(1.5), LerpScaleInterval(fish, startScale=3, scale=1, duration=0.5)) return fish
def generate(self): """generate(self) This method is called when the DistributedObject is reintroduced to the world, either for the first time or from the cache. """ DistributedObject.DistributedObject.generate(self) if self.butterfly: return self.butterfly = Actor.Actor() self.butterfly.loadModel('phase_4/models/props/SZ_butterfly-mod.bam') self.butterfly.loadAnims({ 'flutter': 'phase_4/models/props/SZ_butterfly-flutter.bam', 'glide': 'phase_4/models/props/SZ_butterfly-glide.bam', 'land': 'phase_4/models/props/SZ_butterfly-land.bam' }) # Randomly choose one of the butterfly wing patterns index = self.doId % len(self.wingTypes) chosenType = self.wingTypes[index] node = self.butterfly.getGeomNode() for type in self.wingTypes: wing = node.find('**/' + type) if (type != chosenType): wing.removeNode() else: # Choose an appropriate blend color if (index == 0 or index == 1): color = self.yellowColors[self.doId % len(self.yellowColors)] elif (index == 2 or index == 3): color = self.whiteColors[self.doId % len(self.whiteColors)] elif (index == 4): color = self.paleYellowColors[self.doId % len(self.paleYellowColors)] else: color = Vec4(1, 1, 1, 1) wing.setColor(color) # Make another copy of the butterfly model so we can LOD the # blending. Butterflies that are far away won't bother to # blend animations; nearby butterflies will use dynamic # blending to combine two or more animations at once on # playback for a nice fluttering and landing effect. self.butterfly2 = Actor.Actor(other=self.butterfly) # Allow the nearby butterfly to blend between its three # animations. All animations will be playing all the time; # we'll control which one is visible by varying the control # effect. self.butterfly.enableBlend(blendType=PartBundle.BTLinear) self.butterfly.loop('flutter') self.butterfly.loop('land') self.butterfly.loop('glide') # Make a random play rate so all the butterflies will be # flapping at slightly different rates. This doesn't affect # the rate at which the butterfly moves, just the rate at # which the animation plays on the butterfly. rng = RandomNumGen.RandomNumGen(self.doId) playRate = 0.6 + 0.8 * rng.random() self.butterfly.setPlayRate(playRate, 'flutter') self.butterfly.setPlayRate(playRate, 'land') self.butterfly.setPlayRate(playRate, 'glide') self.butterfly2.setPlayRate(playRate, 'flutter') self.butterfly2.setPlayRate(playRate, 'land') self.butterfly2.setPlayRate(playRate, 'glide') # Also, a random glide contribution ratio. We'll blend a bit # of the glide animation in with the flutter animation to # dampen the effect of flutter. The larger the number here, # the greater the dampening effect. Some butterflies will be # more active than others. (Except when seen from a long way # off, because of the LODNode, below.) self.glideWeight = rng.random() * 2 lodNode = LODNode('butterfly-node') lodNode.addSwitch(100, 40) # self.butterfly2 lodNode.addSwitch(40, 0) # self.butterfly self.butterflyNode = NodePath(lodNode) self.butterfly2.setH(180.0) self.butterfly2.reparentTo(self.butterflyNode) self.butterfly.setH(180.0) self.butterfly.reparentTo(self.butterflyNode) self.__initCollisions() # Set up the drop shadow self.dropShadow = loader.loadModel('phase_3/models/props/drop_shadow') self.dropShadow.setColor(0, 0, 0, 0.3) self.dropShadow.setPos(0, 0.1, -0.05) self.dropShadow.setScale(self.shadowScaleBig) self.dropShadow.reparentTo(self.butterfly)
def __init__(self, name, x, y, h): NodePath.__init__(self, name) self.name = name decorId = PartyGlobals.DecorationIds.fromString(name) centerX, centerY = getCenterPosFromGridSize( x, y, PartyGlobals.DecorationInformationDict[decorId]['gridsize']) self.setPos(centerX, centerY, 0.0) self.setH(h) if self.name == 'CakeTower': self.partyCake = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_cakeTower') tntSeqNode = self.partyCake.find('**/seqNode_tnt').node() tntSeqNode.setFrameRate(20) self.partyCake.reparentTo(self) elif self.name == 'BannerJellyBean': partyBannerModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_bannerJellybean_model') banner = [] banner1 = partyBannerModel.find('**/banner1') banner2 = partyBannerModel.find('**/banner2') temp = NodePath('Empty') banner1.reparentTo(temp) banner2.reparentTo(temp) banner.append(banner1) banner.append(banner2) self.partyBanner = Actor.Actor(partyBannerModel, { 'float': 'phase_13/models/parties/tt_m_ara_pty_bannerJellybean' }) bannerSeqNodeParent = self.partyBanner.find('**/bannerJoint') bannerSeqNode = SequenceNode('banner') for bannerNode in banner: bannerSeqNode.addChild(bannerNode.node()) temp.detachNode() del temp bannerSeqNodeParent.attachNewNode(bannerSeqNode) bannerSeqNode.setFrameRate(4) bannerSeqNode.loop(True) bannerSeqNode.setPlayRate(1) balloonLeft = self.partyBanner.find('**/balloonsLMesh') balloonRight = self.partyBanner.find('**/balloonsRMesh') balloonLeft.setBillboardAxis() balloonRight.setBillboardAxis() balloonLeftLocator = self.partyBanner.find('**/balloonJointL') balloonRightLocator = self.partyBanner.find('**/balloonJointR') balloonLeft.reparentTo(balloonLeftLocator) balloonRight.reparentTo(balloonRightLocator) self.partyBanner.loop('float') self.partyBanner.reparentTo(self) elif self.name == 'GagGlobe': self.partyGlobe = Actor.Actor( 'phase_13/models/parties/tt_m_ara_pty_gagGlobe_model', {'idle': 'phase_13/models/parties/tt_m_ara_pty_gagGlobe'}) self.partyGlobe.setBillboardAxis() confettiLocator = self.partyGlobe.find('**/uvj_confetti') confettiMesh = self.partyGlobe.find('**/innerGlobeMesh') confettiMesh.setTexProjector( confettiMesh.findTextureStage('default'), confettiLocator, self.partyGlobe) collisionMesh = self.partyGlobe.find('**/collisionMesh') collisionMesh.hide() self.globeSphere = CollisionSphere( confettiMesh.getBounds().getCenter(), confettiMesh.getBounds().getRadius()) self.globeSphere.setTangible(1) self.globeSphereNode = CollisionNode('gagGlobe' + str(self.getPos())) self.globeSphereNode.setIntoCollideMask( ToontownGlobals.WallBitmask) self.globeSphereNode.addSolid(self.globeSphere) self.globeSphereNodePath = self.partyGlobe.attachNewNode( self.globeSphereNode) self.partyGlobe.loop('idle') self.partyGlobe.reparentTo(self) elif self.name == 'FlyingHeart': flyingHeartModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_heartWing_model') self.flyingHeart = Actor.Actor( flyingHeartModel, {'idle': 'phase_13/models/parties/tt_m_ara_pty_heartWing'}) wingsSeqNodeParent = self.flyingHeart.find('**/heartWingJoint') collisionMesh = self.flyingHeart.find('**/collision_heartWing') collisionMesh.hide() self.globeSphere = CollisionSphere( collisionMesh.getBounds().getCenter(), collisionMesh.getBounds().getRadius()) self.globeSphere.setTangible(1) self.globeSphereNode = CollisionNode('flyingHeart' + str(self.getPos())) self.globeSphereNode.setIntoCollideMask( ToontownGlobals.WallBitmask) self.globeSphereNode.addSolid(self.globeSphere) self.globeSphereNodePath = self.flyingHeart.attachNewNode( self.globeSphereNode) self.globeSphereNodePath.reparentTo(wingsSeqNodeParent) wings = [] wingsSeqNode = SequenceNode('wingsSeqNode') temp = NodePath('Empty') wing1 = self.flyingHeart.find('**/wing1') wing2 = self.flyingHeart.find('**/wing2') wing3 = self.flyingHeart.find('**/wing3') wing4 = self.flyingHeart.find('**/wing4') wing1.reparentTo(temp) wing2.reparentTo(temp) wing3.reparentTo(temp) wing4.reparentTo(temp) wings.append(wing1) wings.append(wing2) wings.append(wing3) wings.append(wing4) wingsSeqNode.addChild(wing1.node()) wingsSeqNode.addChild(wing2.node()) wingsSeqNode.addChild(wing3.node()) wingsSeqNode.addChild(wing4.node()) wingsSeqNode.addChild(wing3.node()) wingsSeqNode.addChild(wing2.node()) temp.detachNode() del temp wingsSeqNodeParent.attachNewNode(wingsSeqNode) wingsSeqNode.setFrameRate(12) wingsSeqNode.loop(True) wingsSeqNode.setPlayRate(1) self.flyingHeart.loop('idle') self.flyingHeart.reparentTo(self) elif self.name == 'HeartBanner': self.heartBanner = Actor.Actor( 'phase_13/models/parties/tt_m_ara_pty_bannerValentine_model', { 'idle': 'phase_13/models/parties/tt_m_ara_pty_bannerValentine' }) balloonLeft = self.heartBanner.find('**/balloonsL') balloonRight = self.heartBanner.find('**/balloonsR') balloonLeft.setBillboardAxis() balloonRight.setBillboardAxis() balloonLeftLocator = self.heartBanner.find('**/balloonJointL') balloonRightLocator = self.heartBanner.find('**/balloonJointR') balloonLeft.reparentTo(balloonLeftLocator) balloonRight.reparentTo(balloonRightLocator) self.heartBanner.loop('idle') self.heartBanner.reparentTo(self) elif self.name == 'Hydra' or self.name == 'StageWinter': if self.name == 'StageWinter': self.hydra = Actor.Actor( 'phase_13/models/parties/tt_r_ara_pty_winterProps', { 'dance': 'phase_13/models/parties/tt_a_ara_pty_hydra_dance' }) else: self.hydra = Actor.Actor( 'phase_13/models/parties/tt_a_ara_pty_hydra_default', { 'dance': 'phase_13/models/parties/tt_a_ara_pty_hydra_dance' }) st = random.randint(0, 10) animIval = ActorInterval(self.hydra, 'dance') animIvalDur = animIval.getDuration() self.decSfx = loader.loadSfx( 'phase_13/audio/sfx/tt_s_ara_pty_propsShow_dance.mp3') soundIval = SoundInterval(self.decSfx, node=self.hydra, listenerNode=base.localAvatar, volume=PartyGlobals.DECORATION_VOLUME, cutOff=PartyGlobals.DECORATION_CUTOFF, duration=animIvalDur) self.animSeq = Parallel(animIval, soundIval) self.animSeq.loop(st) collisions = self.hydra.find('**/*collision*') collisions.setPos(0, 0, -5) self.hydra.flattenStrong() self.hydra.reparentTo(self) if self.name == 'StageWinter': stageBounds = self.hydra.find('**/stage').node().getBounds() self.hydra.node().setBounds(stageBounds) self.hydra.node().setFinal(1) elif self.name == 'TubeCogVictory': self.tubeCog = Actor.Actor( 'phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_default', { 'wave': 'phase_5.5/models/estate/tt_a_ara_pty_tubeCogVictory_wave' }) st = random.randint(0, 10) animIval = ActorInterval(self.tubeCog, 'wave') animIvalDur = animIval.getDuration() self.decSfx = loader.loadSfx( 'phase_13/audio/sfx/tt_s_ara_pty_tubeCogVictory_wave.mp3') soundIval = SoundInterval(self.decSfx, node=self.tubeCog, listenerNode=base.localAvatar, volume=PartyGlobals.DECORATION_VOLUME, cutOff=PartyGlobals.DECORATION_CUTOFF, duration=animIvalDur) self.animSeq = Parallel(animIval, soundIval) self.animSeq.loop() self.animSeq.setT(st) self.tubeCog.flattenStrong() self.tubeCog.reparentTo(self) elif self.name == 'BannerVictory': self.bannerVictory = Actor.Actor( 'phase_13/models/parties/tt_m_ara_pty_bannerVictory_model', {'idle': 'phase_13/models/parties/tt_m_ara_pty_bannerVictory'}) balloonLeft = self.bannerVictory.find('**/balloonsLMesh') balloonRight = self.bannerVictory.find('**/balloonsRMesh') balloonLeft.setBillboardAxis() balloonRight.setBillboardAxis() balloonLeftLocator = self.bannerVictory.find('**/balloonJointL') balloonRightLocator = self.bannerVictory.find('**/balloonJointR') balloonLeft.reparentTo(balloonLeftLocator) balloonRight.reparentTo(balloonRightLocator) self.bannerVictory.loop('idle') self.bannerVictory.reparentTo(self) elif self.name == 'CannonVictory': self.cannonVictory = Actor.Actor( 'phase_13/models/parties/tt_m_ara_pty_cannonVictory_model', {'idle': 'phase_13/models/parties/tt_m_ara_pty_cannonVictory'}) confettiLocator = self.cannonVictory.findAllMatches( '**/uvj_confetties')[1] confettiMesh = self.cannonVictory.find('**/confettis') confettiMesh.setTexProjector( confettiMesh.findTextureStage('default'), self.cannonVictory, confettiLocator) self.cannonVictory.flattenStrong() self.cannonVictory.loop('idle') self.cannonVictory.reparentTo(self) elif self.name == 'CogStatueVictory': self.decorationModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_cogDoodleVictory') self.decorationModel.reparentTo(self) self.decorationShadow = self.setupAnimSeq() elif self.name == 'CogIceCreamVictory': self.decorationModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_cogIceCreamVictory') self.decorationModel.reparentTo(self) self.decorationShadow = self.setupAnimSeq() elif self.name == 'cogIceCreamWinter': self.decorationModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_cogIceCreamWinter') self.decorationModel.reparentTo(self) self.decorationShadow = self.setupAnimSeq() elif self.name == 'CogStatueWinter': self.decorationModel = loader.loadModel( 'phase_13/models/parties/tt_m_ara_pty_cogDoodleWinter') self.decorationModel.reparentTo(self) self.decorationShadow = self.setupAnimSeq() elif self.name == 'snowman': self.decorationModel = loader.loadModel( 'phase_13/models/estate/tt_m_prp_ext_snowman') self.decorationModel.reparentTo(self) self.decorationModel.find('**/growthStage_1').hide() self.decorationModel.find('**/growthStage_2').hide() elif self.name == 'snowDoodle': self.decorationModel = loader.loadModel( 'phase_5.5/models/estate/tt_m_prp_ext_snowDoodle') self.decorationModel.reparentTo(self) self.decorationModel.find('**/growthStage_1').hide() self.decorationModel.find('**/growthStage_2').hide() else: self.decorationModels = loader.loadModel( 'phase_4/models/parties/partyDecorations') self.decorationModels.copyTo(self) decors = self.findAllMatches('**/partyDecoration_*') for i in xrange(decors.getNumPaths()): decPiece = decors.getPath(i) n = decPiece.getName() if n.endswith('shadow') or n.endswith('base') or n.endswith( 'collision') or n.endswith(name): pass else: decPiece.reparentTo(hidden) self.reparentTo(base.cr.playGame.hood.loader.geom)
def getTeleportOutTrack(self): if not self.teleportHole: self.teleportHole = Actor.Actor('phase_3.5/models/props/portal-mod', {'hole': 'phase_3.5/models/props/portal-chan'}) track = Sequence(Wait(1.0), Parallel(self.getTeleportOutSoundInterval(), Sequence(ActorInterval(self, 'toDig'), Parallel(ActorInterval(self, 'dig'), Func(self.showHole), ActorInterval(self.teleportHole, 'hole', startFrame=81, endFrame=71)), ActorInterval(self, 'disappear'), ActorInterval(self.teleportHole, 'hole', startFrame=71, endFrame=81), Func(self.cleanupHole)), Sequence(Wait(1.0), Func(self.dropShadow.hide)))) return track
def loadModel(self): self.model = Actor.Actor( 'phase_5.5/models/estate/prop_phone-mod', { 'SS_phoneOut': 'phase_5.5/models/estate/prop_phone-SS_phoneOut', 'SS_takePhone': 'phase_5.5/models/estate/prop_phone-SS_takePhone', 'SS_phoneNeutral': 'phase_5.5/models/estate/prop_phone-SS_phoneNeutral', 'SS_phoneBack': 'phase_5.5/models/estate/prop_phone-SS_phoneBack', 'SM_phoneOut': 'phase_5.5/models/estate/prop_phone-SM_phoneOut', 'SM_takePhone': 'phase_5.5/models/estate/prop_phone-SM_takePhone', 'SM_phoneNeutral': 'phase_5.5/models/estate/prop_phone-SM_phoneNeutral', 'SM_phoneBack': 'phase_5.5/models/estate/prop_phone-SM_phoneBack', 'SL_phoneOut': 'phase_5.5/models/estate/prop_phone-SL_phoneOut', 'SL_takePhone': 'phase_5.5/models/estate/prop_phone-SL_takePhone', 'SL_phoneNeutral': 'phase_5.5/models/estate/prop_phone-SL_phoneNeutral', 'SL_phoneBack': 'phase_5.5/models/estate/prop_phone-SL_phoneBack', 'MS_phoneOut': 'phase_5.5/models/estate/prop_phone-MS_phoneOut', 'MS_takePhone': 'phase_5.5/models/estate/prop_phone-MS_takePhone', 'MS_phoneNeutral': 'phase_5.5/models/estate/prop_phone-MS_phoneNeutral', 'MS_phoneBack': 'phase_5.5/models/estate/prop_phone-MS_phoneBack', 'MM_phoneOut': 'phase_5.5/models/estate/prop_phone-MM_phoneOut', 'MM_takePhone': 'phase_5.5/models/estate/prop_phone-MM_takePhone', 'MM_phoneNeutral': 'phase_5.5/models/estate/prop_phone-MM_phoneNeutral', 'MM_phoneBack': 'phase_5.5/models/estate/prop_phone-MM_phoneBack', 'ML_phoneOut': 'phase_5.5/models/estate/prop_phone-ML_phoneOut', 'ML_takePhone': 'phase_5.5/models/estate/prop_phone-ML_takePhone', 'ML_phoneNeutral': 'phase_5.5/models/estate/prop_phone-ML_phoneNeutral', 'ML_phoneBack': 'phase_5.5/models/estate/prop_phone-ML_phoneBack', 'LS_phoneOut': 'phase_5.5/models/estate/prop_phone-LS_phoneOut', 'LS_takePhone': 'phase_5.5/models/estate/prop_phone-LS_takePhone', 'LS_phoneNeutral': 'phase_5.5/models/estate/prop_phone-LS_phoneNeutral', 'LS_phoneBack': 'phase_5.5/models/estate/prop_phone-LS_phoneBack', 'LM_phoneOut': 'phase_5.5/models/estate/prop_phone-LM_phoneOut', 'LM_takePhone': 'phase_5.5/models/estate/prop_phone-LM_takePhone', 'LM_phoneNeutral': 'phase_5.5/models/estate/prop_phone-LM_phoneNeutral', 'LM_phoneBack': 'phase_5.5/models/estate/prop_phone-LM_phoneBack', 'LL_phoneOut': 'phase_5.5/models/estate/prop_phone-LL_phoneOut', 'LL_takePhone': 'phase_5.5/models/estate/prop_phone-LL_takePhone', 'LL_phoneNeutral': 'phase_5.5/models/estate/prop_phone-LL_phoneNeutral', 'LL_phoneBack': 'phase_5.5/models/estate/prop_phone-LL_phoneBack' }) self.model.pose('SS_phoneOut', 0) self.receiverJoint = self.model.find('**/joint_receiver') self.receiverGeom = self.receiverJoint.getChild(0) mount = loader.loadModel('phase_5.5/models/estate/phoneMount-mod') mount.setTransparency(0, 1) self.model.reparentTo(mount) self.ringSfx = loader.loadSfx('phase_3.5/audio/sfx/telephone_ring.ogg') self.handleSfx = loader.loadSfx( 'phase_5.5/audio/sfx/telephone_handle2.ogg') self.hangUpSfx = loader.loadSfx( 'phase_5.5/audio/sfx/telephone_hang_up.ogg') self.pickUpSfx = loader.loadSfx( 'phase_5.5/audio/sfx/telephone_pickup1.ogg') if self.initialScale: mount.setScale(*self.initialScale) self.usedInitialScale = 1 phoneSphere = CollisionSphere(0, -0.66, 0, 0.2) phoneSphere.setTangible(0) phoneSphereNode = CollisionNode(self.phoneSphereEvent) phoneSphereNode.setIntoCollideMask(ToontownGlobals.WallBitmask) phoneSphereNode.addSolid(phoneSphere) mount.attachNewNode(phoneSphereNode) if not self.model.find('**/CurveNode7').isEmpty(): self.setupCord() return mount
def __init__(self, fileName, name, size, hpr, position, color, localSize, localPosition, localOrientation, joints, animations, defaultAnimation, frame, control, texture, cRadius, cFloor, cTop, cType, duration, collection): if name is None: name = fileName # Should parse off the directories Handle.__init__(self, name=name, duration=duration) self.d.hasJoints = len(joints) != 0 self.d.joints = joints self.d.jointNodes = {} self.cRadius = static(cRadius) self.cFloor = static(cFloor) self.cTop = static(cTop) self.cType = static(cType) self.d.noHPR = False self.d.defaultAnimation = defaultAnimation ctl = newSignalRefd(self, "control", controlType, scEmptyControl) self.__dict__["control"] = ctl for j, pj in joints: self.__dict__[j] = newSignalRefd(self, j, HPRType, HPR(0, 0, 0), ctl) self.d.fileName = findModelFile(fileName) if self.d.hasJoints: if animations != None: self.d.model = Actor.Actor(self.d.fileName, animations) #self.d.model.reparentTo(render) if frame != None: self.d.frame = frame else: undefinedSignal(self, 'frame') # ???? Bad error message ... else: self.d.model = Actor.Actor(self.d.fileName) for j, pj in joints: self.d.jointNodes[j] = self.d.model.controlJoint( None, "modelRoot", pj) if self.d.jointNodes[j] == None: print 'joint not found: ' + j exit() else: # Not jointed self.d.model = loader.loadModel(self.d.fileName) if self.d.model == None: print 'Model not found: ' + fileName exit() g.nextModelId = g.nextModelId + 1 self.d.model.setTag('rpandaid', str(g.nextModelId)) self.d.localSize = localSize self.d.localPosition = localPosition self.d.localOrientation = localOrientation self.d.onScreen = False self.__dict__['position'] = newSignalRefd(self, 'position', P3Type, P3(0, 0, 0), ctl) self.__dict__['hpr'] = newSignalRefd(self, 'hpr', HPRType, HPR(0, 0, 0), ctl) self.__dict__['color'] = newSignalRefd(self, 'color', ColorType, noColor, ctl) self.__dict__['size'] = newSignalRefd(self, 'size', numType, 1, ctl) if size is not None: self.size.setBehavior(size) if position is not None: self.position.setBehavior(position) if control is not None: # print "Setting control", control self.control.setBehavior(control) # print hpr # print self.hpr.signal if hpr is not None: self.hpr.setBehavior(hpr) # print "HPR: " # print self.hpr.signal if color is not None: self.color.setBehavior(color) self.d.animPlaying = False # This initializes it so there is no animation playing. if texture is not None: tex = loader.loadTexture(findTexture(texture)) self.d.model.setTexture(tex, 1) if collection is not None: collection.add(self)
def load(self): self.done = 0 self.geyserTrack = None SafeZoneLoader.load(self) self.birdSound = map(base.loader.loadSfx, [ 'phase_4/audio/sfx/SZ_TC_bird1.ogg', 'phase_4/audio/sfx/SZ_TC_bird2.ogg', 'phase_4/audio/sfx/SZ_TC_bird3.ogg' ]) self.underwaterSound = base.loader.loadSfx( 'phase_4/audio/sfx/AV_ambient_water.ogg') self.swimSound = base.loader.loadSfx( 'phase_4/audio/sfx/AV_swim_single_stroke.ogg') self.submergeSound = base.loader.loadSfx( 'phase_5.5/audio/sfx/AV_jump_in_water.ogg') geyserPlacer = self.geom.find('**/geyser*') waterfallPlacer = self.geom.find('**/waterfall*') binMgr = CullBinManager.getGlobalPtr() binMgr.addBin('water', CullBinManager.BTFixed, 29) binMgr = CullBinManager.getGlobalPtr() self.water = self.geom.find('**/water1*') self.water.setTransparency(1) self.water.setColorScale(1.0, 1.0, 1.0, 1.0) self.water.setBin('water', 51, 1) pool = self.geom.find('**/pPlane5*') pool.setTransparency(1) pool.setColorScale(1.0, 1.0, 1.0, 1.0) pool.setBin('water', 50, 1) self.geyserModel = loader.loadModel( 'phase_6/models/golf/golf_geyser_model') self.geyserSound = loader.loadSfx('phase_6/audio/sfx/OZ_Geyser.ogg') self.geyserSoundInterval = SoundInterval(self.geyserSound, node=geyserPlacer, listenerNode=base.camera, seamlessLoop=False, volume=1.0, cutOff=120) self.geyserSoundNoToon = loader.loadSfx( 'phase_6/audio/sfx/OZ_Geyser_No_Toon.ogg') self.geyserSoundNoToonInterval = SoundInterval( self.geyserSoundNoToon, node=geyserPlacer, listenerNode=base.camera, seamlessLoop=False, volume=1.0, cutOff=120) if self.geyserModel: self.geyserActor = Actor.Actor(self.geyserModel) self.geyserActor.loadAnims( {'idle': 'phase_6/models/golf/golf_geyser'}) self.geyserActor.reparentTo(render) self.geyserActor.setPlayRate(8.6, 'idle') self.geyserActor.loop('idle') self.geyserActor.setDepthWrite(0) self.geyserActor.setTwoSided(True, 11) self.geyserActor.setColorScale(1.0, 1.0, 1.0, 1.0) self.geyserActor.setBin('fixed', 0) mesh = self.geyserActor.find('**/mesh_tide1') joint = self.geyserActor.find('**/uvj_WakeWhiteTide1') mesh.setTexProjector(mesh.findTextureStage('default'), joint, self.geyserActor) self.geyserActor.setPos(geyserPlacer.getPos()) self.geyserActor.setZ(geyserPlacer.getZ() - 100.0) self.geyserPos = geyserPlacer.getPos() self.geyserPlacer = geyserPlacer self.startGeyser() base.sfxPlayer.setCutoffDistance(160) self.geyserPoolSfx = loader.loadSfx( 'phase_6/audio/sfx/OZ_Geyser_BuildUp_Loop.ogg') self.geyserPoolSoundInterval = SoundInterval( self.geyserPoolSfx, node=self.geyserPlacer, listenerNode=base.camera, seamlessLoop=True, volume=1.0, cutOff=120) self.geyserPoolSoundInterval.loop() self.bubbles = Bubbles.Bubbles(self.geyserPlacer, render) self.bubbles.renderParent.setDepthWrite(0) self.bubbles.start() self.collBase = render.attachNewNode('collisionBase') self.geyserCollSphere = CollisionSphere(0, 0, 0, 7.5) self.geyserCollSphere.setTangible(1) self.geyserCollNode = CollisionNode('barrelSphere') self.geyserCollNode.setIntoCollideMask(OTPGlobals.WallBitmask) self.geyserCollNode.addSolid(self.geyserCollSphere) self.geyserNodePath = self.collBase.attachNewNode(self.geyserCollNode) self.geyserNodePath.setPos(self.geyserPos[0], self.geyserPos[1], self.geyserPos[2] - 100.0) self.waterfallModel = loader.loadModel( 'phase_6/models/golf/golf_waterfall_model') if self.waterfallModel: self.waterfallActor = Actor.Actor(self.waterfallModel) self.waterfallActor.loadAnims( {'idle': 'phase_6/models/golf/golf_waterfall'}) self.waterfallActor.reparentTo(render) self.waterfallActor.setPlayRate(3.5, 'idle') self.waterfallActor.loop('idle') mesh = self.waterfallActor.find('**/mesh_tide1') joint = self.waterfallActor.find('**/uvj_WakeWhiteTide1') mesh.setTexProjector(mesh.findTextureStage('default'), joint, self.waterfallActor) self.waterfallActor.setPos(waterfallPlacer.getPos()) self.accept('clientLogout', self._handleLogout) return
def __init__(self): PooledEffect.__init__(self) EffectController.__init__(self) self.modelParent = self.attachNewNode('ModelParent') model = loader.loadModel('models/effects/particleCards') self.effectModel = model.find('**/particleWhiteGlow') self.effectModel.reparentTo(self.modelParent) model = loader.loadModel('models/effects/particleCards') self.effectModel2 = model.find('**/particleWhiteGlow') self.effectModel2.reparentTo(self.modelParent) self.modelParent.setBillboardAxis(0) self.modelParent.setBillboardPointWorld() self.modelParent.setBin self.modelParent.setScale(1.4) self.modelParent.setColorScale(0, 0, 0, 1.0) self.modelParent.setBin('fixed', 0) self.effectActor = Actor.Actor( 'models/effects/mopath_none', {'spin': 'models/effects/mopath_spiral'}) self.effectActor.setPlayRate(-1.6, 'spin') self.effectActor.reparentTo(self) self.effectActor.setH(-90) self.effectActor.setPos(-0.6, -0.2, 0) self.effectActor.setScale(1, 1.2, 1) self.effectActor.setBin('fixed', 2) self.joint = self.effectActor.find('**/joint1') model = loader.loadModel('models/effects/particleMaps') self.card = model.find('**/particleEvilSmoke') if not self.particleDummy: self.particleDummy = render.attachNewNode( ModelNode('FlamingSkullParticleDummy')) self.particleDummy.setBin('fixed', 1) self.setDepthWrite(0) self.setFogOff() self.setLightOff() self.setColorScaleOff() self.hide(OTPRender.ShadowCameraBitmask) self.f = ParticleEffect.ParticleEffect('BlackspotCurseSword') self.f.reparentTo(self) self.p0 = Particles.Particles('particles-1') self.p0.setFactory('ZSpinParticleFactory') self.p0.setRenderer('SpriteParticleRenderer') self.p0.setEmitter('SphereVolumeEmitter') self.f.addParticles(self.p0) self.p0.setPoolSize(64) self.p0.setBirthRate(0.2) self.p0.setLitterSize(1) self.p0.setLitterSpread(0) self.p0.setSystemLifespan(0.0) self.p0.setLocalVelocityFlag(1) self.p0.setSystemGrowsOlderFlag(0) self.p0.factory.setLifespanBase(1.2) self.p0.factory.setLifespanSpread(0.5) self.p0.factory.setMassBase(1.0) self.p0.factory.setMassSpread(0.2) self.p0.factory.setTerminalVelocityBase(400.0) self.p0.factory.setTerminalVelocitySpread(0.0) self.p0.factory.setInitialAngle(0.0) self.p0.factory.setInitialAngleSpread(90.0) self.p0.factory.enableAngularVelocity(1) self.p0.factory.setAngularVelocity(0.0) self.p0.factory.setAngularVelocitySpread(20.0) self.p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) self.p0.renderer.setUserAlpha(1.0) self.p0.renderer.setFromNode(self.card) self.p0.renderer.setColor(Vec4(1.0, 1.0, 1.0, 1.0)) self.p0.renderer.setXScaleFlag(1) self.p0.renderer.setYScaleFlag(1) self.p0.renderer.setAnimAngleFlag(1) self.p0.renderer.setInitialXScale(0.001 * self.cardScale) self.p0.renderer.setInitialYScale(0.0012 * self.cardScale) self.p0.renderer.setFinalXScale(0.0003 * self.cardScale) self.p0.renderer.setFinalYScale(0.0003 * self.cardScale) self.p0.renderer.setNonanimatedTheta(0.0) self.p0.renderer.setAlphaBlendMethod( BaseParticleRenderer.PPBLENDLINEAR) self.p0.renderer.setAlphaDisable(0) self.p0.renderer.getColorInterpolationManager().addLinear( 0.0, 1.0, Vec4(0.5, 0.5, 0.5, 1.0), Vec4(0, 0, 0, 1.0), 1) self.p0.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) self.p0.emitter.setAmplitude(-0.25) self.p0.emitter.setAmplitudeSpread(0.5) self.p0.emitter.setOffsetForce(Vec3(0.0, 0.0, 0.5)) self.p0.emitter.setExplicitLaunchVector(Vec3(1.0, 0.0, 0.0)) self.p0.emitter.setRadiateOrigin(Point3(0.0, 0.0, 0.0)) self.p0.emitter.setRadius(0.4) self.f2 = ParticleEffect.ParticleEffect('BlackspotPestilence') self.f2.reparentTo(self) self.p1 = Particles.Particles('particles-1') self.p1.setFactory('ZSpinParticleFactory') self.p1.setRenderer('SpriteParticleRenderer') self.p1.setEmitter('SphereVolumeEmitter') self.f2.addParticles(self.p1) self.p1.setPoolSize(128) self.p1.setBirthRate(0.01) self.p1.setLitterSize(2) self.p1.setLitterSpread(0) self.p1.setSystemLifespan(0.0) self.p1.setLocalVelocityFlag(0) self.p1.setSystemGrowsOlderFlag(0) self.p1.factory.setLifespanBase(1.0) self.p1.factory.setLifespanSpread(0.2) self.p1.factory.setMassBase(1.0) self.p1.factory.setMassSpread(0.0) self.p1.factory.setTerminalVelocityBase(400.0) self.p1.factory.setTerminalVelocitySpread(0.0) self.p1.factory.setInitialAngle(0.0) self.p1.factory.setInitialAngleSpread(360.0) self.p1.factory.enableAngularVelocity(1) self.p1.factory.setAngularVelocity(300.0) self.p1.factory.setAngularVelocitySpread(25.0) self.p1.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT) self.p1.renderer.setUserAlpha(1.0) self.p1.renderer.setFromNode(self.card) self.p1.renderer.setXScaleFlag(1) self.p1.renderer.setYScaleFlag(1) self.p1.renderer.setAnimAngleFlag(1) self.p1.renderer.setNonanimatedTheta(0.0) self.p1.renderer.setAlphaBlendMethod( BaseParticleRenderer.PPBLENDLINEAR) self.p1.renderer.setAlphaDisable(0) self.p1.renderer.getColorInterpolationManager().addLinear( 0.0, 1.0, Vec4(0.5, 0.5, 0.5, 1.0), Vec4(0, 0, 0, 1.0), 1) self.p1.renderer.setInitialXScale(0.001 * self.cardScale2) self.p1.renderer.setFinalXScale(0.0001 * self.cardScale2) self.p1.renderer.setInitialYScale(0.001 * self.cardScale2) self.p1.renderer.setFinalYScale(0.0001 * self.cardScale2) self.p1.emitter.setEmissionType(BaseParticleEmitter.ETRADIATE) self.p1.emitter.setAmplitude(0.2) self.p1.emitter.setAmplitudeSpread(0.5) self.p1.emitter.setOffsetForce(Vec3(0.0, 0.0, -0.45)) self.p1.emitter.setExplicitLaunchVector(Vec3(1.0, 0.0, 0.0)) self.p1.emitter.setRadiateOrigin(Point3(0.0, 0.0, 0.0)) self.p1.emitter.setRadius(0.01)
def generate(self, gender, head, headtype): if not head == 'dog': h = loader.loadModel( 'phase_3/models/char/' + head + '-heads-' + str(CIGlobals.getModelDetail(CIGlobals.Toon)) + '.bam') else: h = Actor( 'phase_3/models/char/tt_a_chr_' + headtype + '_head_' + str(CIGlobals.getModelDetail(CIGlobals.Toon)) + '.bam', { 'neutral': 'phase_3/models/char/tt_a_chr_' + headtype + '_head_neutral.bam', 'run': 'phase_3/models/char/tt_a_chr_' + headtype + '_head_run.bam', 'walk': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_walk.bam', 'pie': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_pie-throw.bam', 'fallb': 'phase_4/models/char/tt_a_chr_' + headtype + '_head_slip-backward.bam', 'fallf': 'phase_4/models/char/tt_a_chr_' + headtype + '_head_slip-forward.bam', 'lose': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_lose.bam', 'win': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_victory-dance.bam', 'squirt': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_water-gun.bam', 'zend': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump-zend.bam', 'tele': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_teleport.bam', 'book': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_book.bam', 'leap': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_leap_zhang.bam', 'jump': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump-zhang.bam', 'happy': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump.bam', 'shrug': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_shrug.bam', 'hdance': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_happy-dance.bam', 'wave': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_wave.bam' }) if headtype == '1': try: h.find('**/eyes-long').hide() except: pass try: h.find('**/ears-long').hide() except: pass try: h.find('**/head-long').hide() except: pass try: h.find('**/joint_pupilR_long').hide() h.find('**/joint_pupilL_long').hide() except: pass try: h.find('**/head-front-long').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-long-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass else: if headtype == '2': try: h.find('**/eyes-short').hide() except: pass try: h.find('**/ears-short').hide() except: pass try: h.find('**/head-short').hide() except: pass try: h.find('**/joint_pupilR_short').hide() h.find('**/joint_pupilL_short').hide() except: pass try: h.find('**/head-front-short').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-long-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass else: if headtype == '3': try: h.find('**/eyes-long').hide() except: pass try: h.find('**/ears-long').hide() except: pass try: h.find('**/head-long').hide() except: pass try: h.find('**/joint_pupilR_long').hide() h.find('**/joint_pupilL_long').hide() except: pass try: h.find('**/head-front-long').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-short-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass else: if headtype == '4': try: h.find('**/eyes-short').hide() except: pass try: h.find('**/ears-short').hide() except: pass try: h.find('**/head-short').hide() except: pass try: h.find('**/head-front-short').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-short-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass if gender == 'girl': lashes = loader.loadModel('phase_3/models/char/' + head + '-lashes.bam') lashes.reparentTo(h) if headtype == '1' or headtype == 'dgm_skirt' or headtype == 'dgm_shorts' or headtype == 'dgs_shorts': lashes.find('**/open-long').hide() lashes.find('**/closed-long').hide() lashes.find('**/closed-short').hide() else: if headtype == '2' or headtype == 'dgl_shorts': lashes.find('**/open-short').hide() lashes.find('**/closed-short').hide() lashes.find('**/closed-long').hide() else: if headtype == '3' or headtype == 'dgm_skirt' or headtype == 'dgm_shorts' or headtype == 'dgs_shorts': lashes.find('**/open-long').hide() lashes.find('**/closed-long').hide() lashes.find('**/closed-short').hide() else: if headtype == '4' or headtype == 'dgl_shorts': lashes.find('**/open-short').hide() lashes.find('**/closed-short').hide() lashes.find('**/closed-long').hide() return tuple((h, lashes)) return h
def load(self): self.done = 0 self.geyserTrack = None SafeZoneLoader.load(self) self.birdSound = map(base.loadSfx, [ 'phase_4/audio/sfx/SZ_TC_bird1.ogg', 'phase_4/audio/sfx/SZ_TC_bird2.ogg', 'phase_4/audio/sfx/SZ_TC_bird3.ogg' ]) self.underwaterSound = base.loadSfx( 'phase_4/audio/sfx/AV_ambient_water.ogg') self.swimSound = base.loadSfx( 'phase_4/audio/sfx/AV_swim_single_stroke.ogg') self.submergeSound = base.loadSfx( 'phase_5.5/audio/sfx/AV_jump_in_water.ogg') geyserPlacer = self.geom.find('**/geyser*') waterfallPlacer = self.geom.find('**/waterfall*') binMgr = CullBinManager.getGlobalPtr() binMgr.addBin('water', CullBinManager.BTFixed, 29) binMgr = CullBinManager.getGlobalPtr() water = self.geom.find('**/water1') water.setTransparency(1) water.setColorScale(1, 1, 1, 1) water.setBin('water', 51, 1) pool = self.geom.find('**/pPlane5*') pool.setTransparency(1) pool.setColorScale(1.0, 1.0, 1.0, 1.0) pool.setBin('water', 50, 1) self.geyserModel = loader.loadModel( 'phase_6/models/golf/golf_geyser_model') self.geyserSound = loader.loadSfx('phase_6/audio/sfx/OZ_Geyser.ogg') self.geyserSoundInterval = SoundInterval(self.geyserSound, node=geyserPlacer, listenerNode=base.camera, seamlessLoop=False, volume=1.0, cutOff=120) self.geyserSoundNoToon = loader.loadSfx( 'phase_6/audio/sfx/OZ_Geyser_No_Toon.ogg') self.geyserSoundNoToonInterval = SoundInterval( self.geyserSoundNoToon, node=geyserPlacer, listenerNode=base.camera, seamlessLoop=False, volume=1.0, cutOff=120) if self.geyserModel: self.geyserActor = Actor.Actor(self.geyserModel) self.geyserActor.loadAnims( {'idle': 'phase_6/models/golf/golf_geyser'}) self.geyserActor.reparentTo(render) self.geyserActor.setPlayRate(8.6, 'idle') self.geyserActor.loop('idle') self.geyserActor.setDepthWrite(0) self.geyserActor.setTwoSided(True, 11) self.geyserActor.setColorScale(1.0, 1.0, 1.0, 1.0) self.geyserActor.setBin('fixed', 0) mesh = self.geyserActor.find('**/mesh_tide1') joint = self.geyserActor.find('**/uvj_WakeWhiteTide1') mesh.setTexProjector(mesh.findTextureStage('default'), joint, self.geyserActor) self.geyserActor.setPos(geyserPlacer.getPos()) self.geyserActor.setZ(geyserPlacer.getZ() - 100.0) self.geyserPos = geyserPlacer.getPos() self.geyserPlacer = geyserPlacer self.startGeyser() base.sfxPlayer.setCutoffDistance(160) self.geyserPoolSfx = loader.loadSfx( 'phase_6/audio/sfx/OZ_Geyser_BuildUp_Loop.ogg') self.geyserPoolSoundInterval = SoundInterval( self.geyserPoolSfx, node=self.geyserPlacer, listenerNode=base.camera, seamlessLoop=True, volume=1.0, cutOff=120) self.geyserPoolSoundInterval.loop() self.bubbles = Bubbles.Bubbles(self.geyserPlacer, render) self.bubbles.renderParent.setDepthWrite(0) self.bubbles.start() self.collBase = render.attachNewNode('collisionBase') self.geyserCollSphere = CollisionSphere(0, 0, 0, 7.5) self.geyserCollSphere.setTangible(1) self.geyserCollNode = CollisionNode('barrelSphere') self.geyserCollNode.setIntoCollideMask(OTPGlobals.WallBitmask) self.geyserCollNode.addSolid(self.geyserCollSphere) self.geyserNodePath = self.collBase.attachNewNode(self.geyserCollNode) self.geyserNodePath.setPos(self.geyserPos[0], self.geyserPos[1], self.geyserPos[2] - 100.0) self.waterfallModel = loader.loadModel( 'phase_6/models/golf/golf_waterfall_model') if self.waterfallModel: self.waterfallActor = Actor.Actor(self.waterfallModel) self.waterfallActor.loadAnims( {'idle': 'phase_6/models/golf/golf_waterfall'}) self.waterfallActor.reparentTo(render) self.waterfallActor.setPlayRate(3.5, 'idle') self.waterfallActor.loop('idle') mesh = self.waterfallActor.find('**/mesh_tide1') joint = self.waterfallActor.find('**/uvj_WakeWhiteTide1') mesh.setTexProjector(mesh.findTextureStage('default'), joint, self.waterfallActor) self.waterfallActor.setPos(waterfallPlacer.getPos()) self.accept('clientLogout', self._handleLogout) # If Chestnut Park is under construction, create the construction site: if base.config.GetBool('want-chestnut-park-construction', False): if base.config.GetBool('want-oz-painter-pete', False): self.painterPete = Toon.Toon() self.painterPete.setName('Painter Pete') self.painterPete.setPickable(0) self.painterPete.setPlayerType(NametagGlobals.CCNonPlayer) dna = ToonDNA.ToonDNA() dna.newToonFromProperties('hls', 'ss', 'm', 'm', 18, 0, 13, 9, 0, 0, 0, 0, 2, 15) self.painterPete.setDNA(dna) self.painterPete.setHat(43, 0, 0) self.painterPete.animFSM.request('neutral') self.painterPete.reparentTo(self.constructionSite) self.painterPete.setPosHpr(-52.5, -133.5, 0.025, 338, 0, 0) self.painterPete.sadEyes() self.painterPete.blinkEyes() return
def __init__(self): # Preliminary capabilities check. if not base.win.getGsg().getSupportsBasicShaders(): self.t = addTitle( "Shadow Demo: Video driver reports that shaders are not supported." ) return if not base.win.getGsg().getSupportsDepthTexture(): self.t = addTitle( "Shadow Demo: Video driver reports that depth textures are not supported." ) return # creating the offscreen buffer. winprops = WindowProperties.size(512, 512) props = FrameBufferProperties() props.setRgbColor(1) props.setAlphaBits(1) props.setDepthBits(1) LBuffer = base.graphicsEngine.makeOutput(base.pipe, "offscreen buffer", -2, props, winprops, GraphicsPipe.BFRefuseWindow, base.win.getGsg(), base.win) self.buffer = LBuffer if not LBuffer: self.t = addTitle( "Shadow Demo: Video driver cannot create an offscreen buffer.") return Ldepthmap = Texture() LBuffer.addRenderTexture(Ldepthmap, GraphicsOutput.RTMBindOrCopy, GraphicsOutput.RTPDepthStencil) if base.win.getGsg().getSupportsShadowFilter(): Ldepthmap.setMinfilter(Texture.FTShadow) Ldepthmap.setMagfilter(Texture.FTShadow) # Adding a color texture is totally unnecessary, but it helps with # debugging. Lcolormap = Texture() LBuffer.addRenderTexture(Lcolormap, GraphicsOutput.RTMBindOrCopy, GraphicsOutput.RTPColor) self.inst_p = addInstructions(0.06, 'P : stop/start the Panda Rotation') self.inst_w = addInstructions(0.12, 'W : stop/start the Walk Cycle') self.inst_t = addInstructions(0.18, 'T : stop/start the Teapot') self.inst_l = addInstructions(0.24, 'L : move light source far or close') self.inst_v = addInstructions(0.30, 'V : View the Depth-Texture results') self.inst_u = addInstructions(0.36, 'U : toggle updating the shadow map') self.inst_x = addInstructions( 0.42, 'Left/Right Arrow : switch camera angles') self.inst_a = addInstructions(0.48, 'Something about A/Z and push bias') base.setBackgroundColor(0, 0, 0.2, 1) base.camLens.setNearFar(1.0, 10000) base.camLens.setFov(75) base.disableMouse() # Load the scene. floorTex = loader.loadTexture('maps/envir-ground.jpg') cm = CardMaker('') cm.setFrame(-2, 2, -2, 2) floor = render.attachNewNode(PandaNode("floor")) for y in range(12): for x in range(12): nn = floor.attachNewNode(cm.generate()) nn.setP(-90) nn.setPos((x - 6) * 4, (y - 6) * 4, 0) floor.setTexture(floorTex) floor.flattenStrong() self.pandaAxis = render.attachNewNode('panda axis') self.pandaModel = Actor.Actor('panda-model', {'walk': 'panda-walk4'}) self.pandaModel.reparentTo(self.pandaAxis) self.pandaModel.setPos(9, 0, 0) self.pandaModel.setShaderInput("scale", 0.01, 0.01, 0.01, 1.0) self.pandaWalk = self.pandaModel.actorInterval('walk', playRate=1.8) self.pandaWalk.loop() self.pandaMovement = self.pandaAxis.hprInterval(20.0, LPoint3(-360, 0, 0), startHpr=LPoint3( 0, 0, 0)) self.pandaMovement.loop() self.teapot = loader.loadModel('teapot') self.teapot.reparentTo(render) self.teapot.setPos(0, -20, 10) self.teapot.setShaderInput("texDisable", 1, 1, 1, 1) self.teapotMovement = self.teapot.hprInterval(50, LPoint3(0, 360, 360)) self.teapotMovement.loop() self.accept('escape', sys.exit) self.accept("arrow_left", self.incrementCameraPosition, [-1]) self.accept("arrow_right", self.incrementCameraPosition, [1]) self.accept("p", self.toggleInterval, [self.pandaMovement]) self.accept("t", self.toggleInterval, [self.teapotMovement]) self.accept("w", self.toggleInterval, [self.pandaWalk]) self.accept("v", base.bufferViewer.toggleEnable) self.accept("u", self.toggleUpdateShadowMap) self.accept("l", self.incrementLightPosition, [1]) self.accept("o", base.oobe) self.accept('a', self.adjustPushBias, [1.1]) self.accept('z', self.adjustPushBias, [0.9]) self.LCam = base.makeCamera(LBuffer) self.LCam.node().setScene(render) self.LCam.node().getLens().setFov(40) self.LCam.node().getLens().setNearFar(10, 100) # default values self.pushBias = 0.04 self.ambient = 0.2 self.cameraSelection = 0 self.lightSelection = 0 # setting up shader render.setShaderInput('light', self.LCam) render.setShaderInput('Ldepthmap', Ldepthmap) render.setShaderInput('ambient', self.ambient, 0, 0, 1.0) render.setShaderInput('texDisable', 0, 0, 0, 0) render.setShaderInput('scale', 1, 1, 1, 1) # Put a shader on the Light camera. lci = NodePath(PandaNode("Light Camera Initializer")) lci.setShader(loader.loadShader('caster.sha')) self.LCam.node().setInitialState(lci.getState()) # Put a shader on the Main camera. # Some video cards have special hardware for shadow maps. # If the card has that, use it. If not, use a different # shader that does not require hardware support. mci = NodePath(PandaNode("Main Camera Initializer")) if base.win.getGsg().getSupportsShadowFilter(): mci.setShader(loader.loadShader('shadow.sha')) else: mci.setShader(loader.loadShader('shadow-nosupport.sha')) base.cam.node().setInitialState(mci.getState()) self.incrementCameraPosition(0) self.incrementLightPosition(0) self.adjustPushBias(1.0)
def copyProp(prop): from direct.actor import Actor if isinstance(prop, Actor.Actor): return Actor.Actor(other=prop) else: return prop.copyTo(hidden)
def __init__(self, fileName, size, hpr, position, tag, color, texture, name, parent, duration, frame, joints, animation): Proxy.Proxy.__init__(self, name=str(name) + ":" + str(PandaGlobals.nextModelId), updater=modelUpdater, types={ "position": p3Type, "hpr": hprType, "size": numType, "color": colorType, "texture": stringType }) modelTypes = { "localOrientation": hprType, "localSize": numType, "localPosition": p3Type, "cRadius": numType, "cType": stringType, "cFloor": numType, "cTop": numType } #(p3Type, SP3(0,0,0)), "hpr": (hprType, SHPR(0,0,0)), "size": (numType, 1)}) PandaGlobals.nextModelId = PandaGlobals.nextModelId + 1 self._parent = getModel(parent) self._mFile = FileSearch.fileSearch(fileName, "models", ["egg"]) #print("Object Name: "+ str(fileName)+"-gID: "+str(PandaGlobals.nextModelId)) if type(tag) == type("s"): collections = [tag] else: collections = tag self._collections = collections if fileName in parameterCache: self._mParams = parameterCache[fileName] elif self._mFile is None: print("Can't find model " + repr(fileName)) #should substitute pandafor unknown models #self._mFile = Filename("/c/Panda3D-1.8.1/models/"+fileName) #print("File Path: " + repr(mFile)) else: mParamFile = Filename(self._mFile) #print(repr(mParamFile)) mParamFile.setExtension("model") if mParamFile.exists(): self._mParams = FileIO.loadDict( mParamFile, types=modelTypes, defaults=defaultModelParameters) else: print("No .model for " + str(fileName)) self._mParams = defaultModelParameters parameterCache[fileName] = self._mParams self._hasJoints = len(joints) != 0 self._joints = joints self._jointNodes = {} self._animation = animation if animation != None: self._pandaModel = Actor.Actor(fileName, animation) if frame != None: self._frame = frame else: # Not animated self._pandaModel = loader.loadModel(self._mFile) if self._pandaModel == None: print('Model not found: ' + fileName) exit() if self._hasJoints: for j, pj in joints: self._jointNodes[j] = self._pandaModel.controlJoint( None, "modelRoot", pj) if self._jointNodes[j] == None: print('joint not found: ' + j) exit() self._pandaModel.setTag('rpandaid', str(self._name)) self._fileName = fileName self._onScreen = False self._animPlaying = False self._size = self._mParams['localSize'] self._hpr = self._mParams['localOrientation'] self._position = self._mParams['localPosition'] self._cRadius = float(self._mParams['cRadius']) self._cType = self._mParams['cType'] self._cFloor = float(self._mParams['cFloor']) self._cTop = float(self._mParams['cTop']) self._currentTexture = "" self._onscreen = False # This defers the reparenting until the model has been updated the first time self._parent = getModel(parent) if position is not None: self.position = position else: self.position = P3(0, 0, 0) if hpr is not None: self.hpr = hpr else: self.hpr = SHPR(0, 0, 0) if size is not None: self.size = size else: self.size = 1 if texture is not None: self.texture = texture else: self.texture = "" if color is not None: self.color = color else: self.color = noColor for tag in collections: if tag not in frpGlobals.collections: frpGlobals.collections[tag] = [self] frpGlobals.collections[tag].append(self) #Get saved reaction functions for this collection for t, v in frpGlobals.collectionReactions.items(): for tag in collections: if tag in v: for args in v[tag]: getattr(Functions, t)(self, args[0], what=args[1]) if duration > 0: react(self, delay(duration), exitScene)
def enterSetup(self): # ropes = loader.loadModel('phase_4/models/modules/tt_m_ara_int_ropes') # ropes.reparentTo(self.interior) self.sillyMeter = Actor.Actor('phase_4/models/props/tt_a_ara_ttc_sillyMeter_default', {'arrowTube': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_arrowFluid', 'phaseOne': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseOne', 'phaseTwo': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseTwo', 'phaseThree': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseThree', 'phaseFour': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseFour', 'phaseFourToFive': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseFourToFive', 'phaseFive': 'phase_4/models/props/tt_a_ara_ttc_sillyMeter_phaseFive'}) # self.sillyMeter.reparentTo(self.interior) self.interior.find('**/sillyOMeterSign').removeNode() # self.flatSillyMeter = loader.loadModel('phase_3.5/models/modules/tt_m_ara_int_sillyMeterFlat') # self.flatSillyMeter.reparentTo(self.interior) # self.flatSillyMeter.hide() # self.flatDuck = loader.loadModel('phase_3.5/models/modules/tt_m_ara_int_scientistDuckFlat') # loc1 = self.interior.find('**/npc_origin_1') # if loc1: # self.flatDuck.reparentTo(loc1) # self.flatDuck.hide() # self.flatMonkey = loader.loadModel('phase_3.5/models/modules/tt_m_ara_int_scientistMonkeyFlat') # loc1 = self.interior.find('**/npc_origin_2') # if loc1: # self.flatMonkey.reparentTo(loc1) # self.flatMonkey.hide() # self.flatHorse = loader.loadModel('phase_3.5/models/modules/tt_m_ara_int_scientistHorseFlat') # loc1 = self.interior.find('**/npc_origin_3') # if loc1: # self.flatHorse.reparentTo(loc1) # self.flatHorse.hide() self.smPhase1 = self.sillyMeter.find('**/stage1') self.smPhase2 = self.sillyMeter.find('**/stage2') self.smPhase3 = self.sillyMeter.find('**/stage3') self.smPhase4 = self.sillyMeter.find('**/stage4') self.smPhase2.hide() self.smPhase3.hide() self.smPhase4.hide() thermometerLocator = self.sillyMeter.findAllMatches('**/uvj_progressBar')[1] thermometerMesh = self.sillyMeter.find('**/tube') thermometerMesh.setTexProjector(thermometerMesh.findTextureStage('default'), thermometerLocator, self.sillyMeter) self.sillyMeter.flattenMedium() self.sillyMeter.makeSubpart('arrow', ['uvj_progressBar*', 'def_springA']) self.sillyMeter.makeSubpart('meter', ['def_pivot'], ['uvj_progressBar*', 'def_springA']) self.audio3d = Audio3DManager.Audio3DManager(base.sfxManagerList[0], base.camera) self.phase1Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseOne.ogg') self.phase1Sfx.setLoop(True) self.phase2Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseTwo.ogg') self.phase2Sfx.setLoop(True) self.phase3Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseThree.ogg') self.phase3Sfx.setLoop(True) self.phase4Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseFour.ogg') self.phase4Sfx.setLoop(True) self.phase4To5Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseFourToFive.ogg') self.phase4To5Sfx.setLoop(False) self.phase5Sfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterPhaseFive.ogg') self.phase5Sfx.setLoop(True) self.arrowSfx = self.audio3d.loadSfx('phase_4/audio/sfx/tt_s_prp_sillyMeterArrow.ogg') self.arrowSfx.setLoop(False) self.audio3d.setDropOffFactor(0.1) self.accept('SillyMeterPhase', self.selectPhase) self.accept('SillyMeterIsRunning', self.sillyMeterIsRunning) self.startIfNeeded()
def makeNodePath(self): self.nodePath = Actor.Actor() #NodePath(self.uniqueName("chairNodePath")) self.chair = self.nodePath.attachNewNode('myChair')
def setGameReady(self): self.notify.debug('setGameReady') if not self.hasLocalToon: return if DistributedMinigame.setGameReady(self): return self.dead = 0 self.difficultyPatterns = { ToontownGlobals.ToontownCentral: [1, 1.5, 65, 3], ToontownGlobals.DonaldsDock: [1, 1.3, 65, 1], ToontownGlobals.DaisyGardens: [2, 1.2, 65, 1], ToontownGlobals.MinniesMelodyland: [2, 1.0, 65, 1], ToontownGlobals.TheBrrrgh: [3, 1.0, 65, 1], ToontownGlobals.DonaldsDreamland: [3, 1.0, 65, 1] } pattern = self.difficultyPatterns[self.getSafezoneId()] self.NUMCRABS = pattern[0] self.SPEEDMULT = pattern[1] self.TIME = pattern[2] loadBase = 'phase_4/models/char/' for i in xrange(self.NUMCRABS): self.crabs.append( Actor.Actor(loadBase + 'kingCrab-zero.bam', {'anim': loadBase + 'kingCrab-swimLOOP.bam'})) for i in xrange(len(self.crabs)): crab = self.crabs[i] crab.reparentTo(render) crab.name = 'king' crab.crabId = i cSphere = CollisionSphere(0.0, 0.0, 1, 1.3) cSphereNode = CollisionNode('crabby' + str(i)) cSphereNode.addSolid(cSphere) cSphereNode.setFromCollideMask(BitMask32.allOff()) cSphereNode.setIntoCollideMask(DivingGameGlobals.CollideMask) cSphereNodePath = crab.attachNewNode(cSphereNode) cSphereNodePath.setScale(1, 3, 1) self.accept('hitby-' + 'crabby' + str(i), self.fishCollision) if i % 2 is 0: crab.setPos(20, 0, -40) crab.direction = -1 else: crab.setPos(-20, 0, -40) crab.direction = 1 crab.loop('anim') crab.setScale(1, 0.3, 1) crab.moveLerp = Sequence() self.collHandEvent = CollisionHandlerEvent() self.cTrav = CollisionTraverser('DistributedDiverGame') self.cTrav2 = CollisionTraverser('DistributedDiverGame') self.collHandEvent.addInPattern('reach-%in') self.collHandEvent.addAgainPattern('reach-%in') self.collHandEvent.addInPattern('into-%in') self.collHandEvent.addInPattern('hitby-%in') loadBase = 'phase_4/models/minigames/' self.treasures = [] self.chestIcons = {} for i in xrange(self.NUMTREASURES): self.chestIcons[i] = loader.loadModel(loadBase + 'treasure_chest.bam') self.chestIcons[i].reparentTo(self.mapModel) self.chestIcons[i].setScale(1.5) treasure = DivingTreasure.DivingTreasure(i) self.accept('grab-' + str(i), self.__treasureGrabbed) self.collHandEvent.addInPattern('grab-%in') self.collHandEvent.addAgainPattern('grab-%in') self.treasures.append(treasure) self.cTrav.traverse(render) spawnX = 24 * self.LAG_COMP spawnY = 0.6 self.spawners.append( DivingFishSpawn.DivingFishSpawn(0, 1, Point3(-spawnX, spawnY, 25), self.collHandEvent)) self.spawners.append( DivingFishSpawn.DivingFishSpawn(1, -1, Point3(spawnX, spawnY, 16), self.collHandEvent)) self.spawners.append( DivingFishSpawn.DivingFishSpawn(2, 1, Point3(-spawnX, spawnY, 6), self.collHandEvent)) self.spawners.append( DivingFishSpawn.DivingFishSpawn(3, -1, Point3(spawnX, spawnY, -4), self.collHandEvent)) self.spawners.append( DivingFishSpawn.DivingFishSpawn(4, 1, Point3(-spawnX, spawnY, -15), self.collHandEvent)) self.spawners.append( DivingFishSpawn.DivingFishSpawn(5, -1, Point3(spawnX, spawnY, -23), self.collHandEvent)) for spawner in self.spawners: spawner.lastSpawn = 0 cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.4) cSphereNode = CollisionNode('%s' % self.localAvId) cSphereNode.addSolid(cSphere) cSphereNode.setFromCollideMask(DivingGameGlobals.CollideMask) cSphereNode.setIntoCollideMask(BitMask32.allOff()) headparts = base.localAvatar.getHeadParts() pos = headparts[2].getPos() self.cSphereNodePath1 = base.localAvatar.attachNewNode(cSphereNode) self.cSphereNodePath1.setPos(pos + Point3(0, 1.5, 1)) self.cTrav.addCollider(self.cSphereNodePath1, self.collHandEvent) cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.4) cSphereNode = CollisionNode('%s' % self.localAvId) cSphereNode.addSolid(cSphere) cSphereNode.setFromCollideMask(DivingGameGlobals.CollideMask) cSphereNode.setFromCollideMask(BitMask32.allOff()) cSphereNode.setIntoCollideMask(BitMask32.allOff()) headparts = base.localAvatar.getHeadParts() pos = headparts[2].getPos() self.cSphereNodePath2 = base.localAvatar.attachNewNode(cSphereNode) self.cSphereNodePath2.setPos(pos + Point3(0, 1.5, -1)) self.cTrav.addCollider(self.cSphereNodePath2, self.collHandEvent) self.pusher = CollisionHandlerPusher() self.pusher.addCollider(self.cSphereNodePath1, base.localAvatar) self.pusher.addCollider(self.cSphereNodePath2, base.localAvatar) self.pusher.setHorizontal(0) self.cTrav2.addCollider(self.cSphereNodePath1, self.pusher) self.cTrav2.addCollider(self.cSphereNodePath2, self.pusher) self.remoteToonCollNPs = {} for avId in self.remoteAvIdList: toon = self.getAvatar(avId) if toon: headparts = toon.getHeadParts() pos = headparts[2].getPos() cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.4) cSphereNode = CollisionNode('%s' % avId) cSphereNode.addSolid(cSphere) cSphereNode.setCollideMask(DivingGameGlobals.CollideMask) cSphereNP = toon.attachNewNode(cSphereNode) cSphereNP.setPos(pos + Point3(0, 1.5, 1)) self.remoteToonCollNPs[int(str(avId) + str(1))] = cSphereNP cSphere = CollisionSphere(0.0, 0.0, 0.0, 1.4) cSphereNode = CollisionNode('%s' % avId) cSphereNode.addSolid(cSphere) cSphereNode.setCollideMask(DivingGameGlobals.CollideMask) cSphereNP = toon.attachNewNode(cSphereNode) cSphereNP.setPos(pos + Point3(0, 1.5, -1)) self.remoteToonCollNPs[int(str(avId) + str(1))] = cSphereNP toonSD = DivingGameToonSD.DivingGameToonSD(avId, self) self.toonSDs[avId] = toonSD toonSD.load() toonSD.enter() toonSD.fsm.request('normal') for avId in self.remoteAvIdList: toon = self.getAvatar(avId) if toon: toon.reparentTo(render) self.__placeToon(avId) toon.startSmooth() self.remoteToons = {} for avId in self.remoteAvIdList: toon = self.getAvatar(avId) self.remoteToons[avId] = toon
class TTCHood: def __init__(self, cr): self.cr = cr self.dnaStore = DNAStorage() self.isLoaded = 0 self.suitEffectEnabled = False self.amblight = None self.ambNode = None self.sky = None self.skyTrack = None self.skySeq = None self.lightTrack = None self.skyUtil = SkyUtil() return def createHood(self, loadStorage = 1, AI = 0): if loadStorage: loadDNAFile(self.dnaStore, 'phase_4/dna/storage.dna') loadDNAFile(self.dnaStore, 'phase_4/dna/storage_TT.dna') loadDNAFile(self.dnaStore, 'phase_4/dna/storage_TT_sz.dna') loadDNAFile(self.dnaStore, 'phase_5/dna/storage_town.dna') loadDNAFile(self.dnaStore, 'phase_5/dna/storage_TT_town.dna') self.node = loadDNAFile(self.dnaStore, 'phase_4/dna/toontown_central_sz.dna') if self.node.getNumParents() == 1: self.geom = NodePath(self.node.getParent(0)) self.geom.reparentTo(hidden) else: self.geom = hidden.attachNewNode(self.node) gsg = base.win.getGsg() if gsg: self.geom.prepareScene(gsg) self.geom.setName('toontown_central') self.geom.find('**/hill').setTransparency(TransparencyAttrib.MBinary, 1) self.createSky('tt') base.hoodBGM = base.loadMusic('phase_4/audio/bgm/TC_nbrhood.ogg') base.hoodBGM.setVolume(0.25) base.hoodBGM.setLoop(True) base.hoodBGM.play() self.clerk_node = render.attach_new_node('clerk_node') self.clerk_node.set_pos(-80, -85.57, 0.5) self.clerk_node.set_h(165.07) self.geom.find('**/toontown_central').setCollideMask(BitMask32.allOff()) self.geom.find('**/coll_sidewalk').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/collision_1').node().setIntoCollideMask(CIGlobals.WallBitmask) self.geom.find('**/coll_mainFoolr').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/left_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/right_ear').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_bridge_floor').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_bridge').node().setIntoCollideMask(CIGlobals.WallBitmask) self.geom.find('**/coll_r_stair').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_l_stair_2').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_l_stairend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_r_satirend_1').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_plaza').node().setIntoCollideMask(CIGlobals.FloorBitmask) self.geom.find('**/coll_hedges').node().setIntoCollideMask(CIGlobals.WallBitmask) self.coll_list = ['coll_sidewalk', 'collision_1', 'coll_mainFoolr', 'left_ear', 'right_ear', 'coll_bridge_floor', 'coll_bridge', 'coll_r_stair', 'coll_l_stair_2', 'coll_l_stairend_1', 'coll_r_stairend_1', 'coll_plaza', 'coll_hedges'] self.geom.reparentTo(render) self.telescope = Actor(self.geom.find('**/*animated_prop_HQTelescopeAnimatedProp*'), {'chan': 'phase_3.5/models/props/HQ_telescope-chan.bam'}, copy=0) self.telescope.reparentTo(self.geom.find('**/*toon_landmark_hqTT*')) self.createLights(1, 1, 1) taskMgr.add(self.telescopeTask, 'telescopeTask') self.isLoaded = 1 messenger.send('loadedHood') def createLights(self, r, g, b, startColor = 1, fade = 0): self.deleteLights() self.amblight = AmbientLight('amblight') self.amblight.setColor(VBase4(r, g, b, 1)) self.ambNode = render.attachNewNode(self.amblight) render.setLight(self.ambNode) if fade: self.lightTrack = LerpFunc(self.setLightColor, fromData=startColor, toData=r, duration=2.5, blendType='easeInOut') self.lightTrack.start() self.skyTrack = LerpColorInterval(self.sky, color=VBase4(r + 0.4, g + 0.4, b + 0.4, 1.0), startColor=VBase4(startColor, startColor, startColor, 1.0), duration=1.5) self.skyTrack.start() sky = 'tt' if r < 0.6: sky = 'br' self.skySeq = Sequence(Wait(1.5), Func(self.createSky, sky)) self.skySeq.start() def createSky(self, sky): self.deleteSky() skyPath = 'phase_3.5/models/props/' + sky.upper() + '_sky.bam' self.sky = loader.loadModel(skyPath) self.sky.reparentTo(self.geom) self.sky.setPos(9.15527e-05, -1.90735e-06, 2.6226e-06) self.sky.setH(-90) if sky == 'tt': self.skyUtil.startSky(self.sky) def deleteSky(self): self.skyUtil.stopSky() if self.sky: self.sky.removeNode() self.sky = None if self.lightTrack: self.lightTrack.pause() self.lightTrack = None if self.skyTrack: self.skyTrack.pause() self.skyTrack = None if self.skySeq: self.skySeq.pause() self.skySeq = None return def setLightColor(self, color): self.amblight.setColor(VBase4(color, color, color, 1)) def deleteLights(self): if self.ambNode: render.clearLight(self.ambNode) self.ambNode.removeNode() self.ambNode = None return def telescopeTask(self, task): if not self.isLoaded: return task.done self.telescope.play('chan') task.delayTime = 12 return task.again def createTrolley(self): self.trolley = TrolleyBase(self.cr) def enableSuitEffect(self, size): self.createLights(0.4, 0.4, 0.4, startColor=1, fade=1) self.fogNode = Fog('fog') self.fogNode.setColor(0.3, 0.3, 0.3) self.fogNode.setExpDensity(0.0025) render.setFog(self.fogNode) base.hoodBGM.stop() song = random.randint(1, 4) base.hoodBGM = base.loadMusic('phase_3.5/audio/bgm/encntr_general_bg.ogg') base.hoodBGM.setVolume(0.7) base.hoodBGM.setLoop(True) base.hoodBGM.play() self.suitEffectEnabled = True def bossSpawned(self): base.hoodBGM.stop() base.hoodBGM = base.loadMusic('phase_7/audio/bgm/encntr_suit_winning_indoor.ogg') base.hoodBGM.setVolume(0.7) base.hoodBGM.setLoop(True) Sequence(Wait(0.5), Func(base.hoodBGM.play)).start() def disableSuitEffect(self): self.createLights(1, 1, 1) self.createSky('tt') base.hoodBGM.stop() base.hoodBGM = base.loadMusic('phase_4/audio/bgm/TC_nbrhood.ogg') base.hoodBGM.setVolume(0.25) base.hoodBGM.setLoop(True) base.hoodBGM.play() self.suitEffectEnabled = False def unloadHood(self): self.isLoaded = 0 if self.suitEffectEnabled: self.disableSuitEffect() self.deleteSky() self.deleteLights() self.geom.remove() self.clerk_node.remove_node() base.hoodBGM.stop()
__all__ = [] if __name__ == "__main__": from direct.directbase import DirectStart from pandac.PandaModules import * from IntervalGlobal import * from direct.actor.Actor import * from direct.directutil import Mopath boat = loader.loadModel('models/misc/smiley') boat.reparentTo(render) donald = Actor() donald.loadModel("phase_6/models/char/donald-wheel-1000") donald.loadAnims({"steer":"phase_6/models/char/donald-wheel-wheel"}) donald.reparentTo(boat) dock = loader.loadModel('models/misc/smiley') dock.reparentTo(render) sound = loader.loadSfx('phase_6/audio/sfx/SZ_DD_waterlap.mp3') foghorn = loader.loadSfx('phase_6/audio/sfx/SZ_DD_foghorn.mp3') mp = Mopath.Mopath() mp.loadFile(Filename('phase_6/paths/dd-e-w')) # Set up the boat boatMopath = MopathInterval(mp, boat, 'boatpath')
def generate(self, gender, head, headtype): if not head == 'dog': h = loader.loadModel('phase_3/models/char/' + head + '-heads-' + str(CIGlobals.getModelDetail(CIGlobals.Toon)) + '.bam') else: h = Actor('phase_3/models/char/tt_a_chr_' + headtype + '_head_' + str(CIGlobals.getModelDetail(CIGlobals.Toon)) + '.bam', {'neutral': 'phase_3/models/char/tt_a_chr_' + headtype + '_head_neutral.bam', 'run': 'phase_3/models/char/tt_a_chr_' + headtype + '_head_run.bam', 'walk': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_walk.bam', 'pie': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_pie-throw.bam', 'fallb': 'phase_4/models/char/tt_a_chr_' + headtype + '_head_slip-backward.bam', 'fallf': 'phase_4/models/char/tt_a_chr_' + headtype + '_head_slip-forward.bam', 'lose': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_lose.bam', 'win': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_victory-dance.bam', 'squirt': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_water-gun.bam', 'zend': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump-zend.bam', 'tele': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_teleport.bam', 'book': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_book.bam', 'leap': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_leap_zhang.bam', 'jump': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump-zhang.bam', 'happy': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_jump.bam', 'shrug': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_shrug.bam', 'hdance': 'phase_5/models/char/tt_a_chr_' + headtype + '_head_happy-dance.bam', 'wave': 'phase_3.5/models/char/tt_a_chr_' + headtype + '_head_wave.bam'}) if headtype == '1': try: h.find('**/eyes-long').hide() except: pass try: h.find('**/ears-long').hide() except: pass try: h.find('**/head-long').hide() except: pass try: h.find('**/joint_pupilR_long').hide() h.find('**/joint_pupilL_long').hide() except: pass try: h.find('**/head-front-long').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-long-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass elif headtype == '2': try: h.find('**/eyes-short').hide() except: pass try: h.find('**/ears-short').hide() except: pass try: h.find('**/head-short').hide() except: pass try: h.find('**/joint_pupilR_short').hide() h.find('**/joint_pupilL_short').hide() except: pass try: h.find('**/head-front-short').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-long-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass elif headtype == '3': try: h.find('**/eyes-long').hide() except: pass try: h.find('**/ears-long').hide() except: pass try: h.find('**/head-long').hide() except: pass try: h.find('**/joint_pupilR_long').hide() h.find('**/joint_pupilL_long').hide() except: pass try: h.find('**/head-front-long').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-short-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass elif headtype == '4': try: h.find('**/eyes-short').hide() except: pass try: h.find('**/ears-short').hide() except: pass try: h.find('**/head-short').hide() except: pass try: h.find('**/head-front-short').hide() except: pass try: h.find('**/muzzle-long-laugh').hide() except: pass try: h.find('**/muzzle-long-angry').hide() except: pass try: h.find('**/muzzle-long-smile').hide() except: pass try: h.find('**/muzzle-long-sad').hide() except: pass try: h.find('**/muzzle-long-surprise').hide() except: pass try: h.find('**/muzzle-short-neutral').hide() except: pass try: h.find('**/muzzle-short-laugh').hide() except: pass try: h.find('**/muzzle-short-angry').hide() except: pass try: h.find('**/muzzle-short-smile').hide() except: pass try: h.find('**/muzzle-short-sad').hide() except: pass try: h.find('**/muzzle-short-surprise').hide() except: pass if gender == 'girl': lashes = loader.loadModel('phase_3/models/char/' + head + '-lashes.bam') lashes.reparentTo(h) if headtype == '1' or headtype == 'dgm_skirt' or headtype == 'dgm_shorts' or headtype == 'dgs_shorts': lashes.find('**/open-long').hide() lashes.find('**/closed-long').hide() lashes.find('**/closed-short').hide() elif headtype == '2' or headtype == 'dgl_shorts': lashes.find('**/open-short').hide() lashes.find('**/closed-short').hide() lashes.find('**/closed-long').hide() elif headtype == '3' or headtype == 'dgm_skirt' or headtype == 'dgm_shorts' or headtype == 'dgs_shorts': lashes.find('**/open-long').hide() lashes.find('**/closed-long').hide() lashes.find('**/closed-short').hide() elif headtype == '4' or headtype == 'dgl_shorts': lashes.find('**/open-short').hide() lashes.find('**/closed-short').hide() lashes.find('**/closed-long').hide() return tuple((h, lashes)) else: return h