def set_up(self): self.reparent_to(render) self.reflection_map = load_texture(self.reflection_map_name) self.fog = Fog('fog') self.setFog(self.fog) self.fog_color = color.light_gray self.fog_density = 0
class CogdoFlyingLevelFog: def __init__(self, level, color = Globals.Level.FogColor): self._level = level self.color = color fogDistance = self._level.quadLengthUnits * max(1, self._level.quadVisibiltyAhead * 0.2) self.fog = Fog('RenderFog') self.fog.setColor(self.color) self.fog.setLinearRange(fogDistance * Globals.Level.RenderFogStartFactor, fogDistance) self._visible = False self._clearColor = Vec4(base.win.getClearColor()) self._clearColor.setW(1.0) def destroy(self): self.setVisible(False) if hasattr(self, 'fog'): del self.fog def isVisible(self): return self._visible def setVisible(self, visible): self._visible = visible if self._visible: base.win.setClearColor(self.color) render.setFog(self.fog) else: base.win.setClearColor(self._clearColor) render.clearFog()
def loadPrisonCrater(): ## Sky color base.win.setClearColor(Vec4(.46,.824,.904,1)) ## Load Ground sand = loader.loadModel("data/models/sand.bam") sand.reparentTo(render) sand.setTexScale(TextureStage.getDefault(),5000,5000) craterwalls = loader.loadModel("data/models/craterwalls.bam") craterwalls.reparentTo(render) craterwalls.setTexScale(TextureStage.getDefault(),500,50) ## World Effects fog = Fog("Fog") fog.setColor(255,215,143) fog.setExpDensity(.0000001) render.setFog(fog) alight = render.attachNewNode(AmbientLight("Abient")) alight.node().setColor(Vec4(.9,.9,.9,1)) render.setLight(alight) sun = DirectionalLight('Sun') sun.setColor(Vec4(1,1,1,1)) sunNP = render.attachNewNode(sun) sunNP.setPos(0,0,4000) sunNP.setHpr(0,-90,0) render.setLight(sunNP)
class BRHood(ToonHood): notify = directNotify.newCategory('BRHood') ID = ToontownGlobals.TheBrrrgh TOWNLOADER_CLASS = BRTownLoader SAFEZONELOADER_CLASS = BRSafeZoneLoader STORAGE_DNA = 'phase_8/dna/storage_BR.pdna' SKY_FILE = 'phase_3.5/models/props/BR_sky' SPOOKY_SKY_FILE = 'phase_3.5/models/props/BR_sky' TITLE_COLOR = (0.3, 0.6, 1.0, 1.0) HOLIDAY_DNA = { ToontownGlobals.WINTER_DECORATIONS: ['phase_8/dna/winter_storage_BR.pdna'], ToontownGlobals.WACKY_WINTER_DECORATIONS: ['phase_8/dna/winter_storage_BR.pdna'], ToontownGlobals.HALLOWEEN_PROPS: ['phase_8/dna/halloween_props_storage_BR.pdna'], ToontownGlobals.SPOOKY_PROPS: ['phase_8/dna/halloween_props_storage_BR.pdna'] } def load(self): ToonHood.load(self) self.fog = Fog('BRFog') def setFog(self): if base.wantFog: self.fog.setColor(0.9, 0.9, 0.9) self.fog.setExpDensity(0.004) render.clearFog() render.setFog(self.fog) self.sky.clearFog() self.sky.setFog(self.fog)
def loadFog(self): self.fog = Fog('distanceFog') self.fog.setColor(0, 0, 0) self.fog.setExpDensity(.07) self.render.setFog(self.fog) self.fog.setOverallHidden(False) return self.fog.getExpDensity()
class BRHood(ToonHood): notify = directNotify.newCategory("BRHood") ID = ToontownGlobals.TheBrrrgh TOWNLOADER_CLASS = BRTownLoader SAFEZONELOADER_CLASS = BRSafeZoneLoader STORAGE_DNA = "phase_8/dna/storage_BR.pdna" SKY_FILE = "phase_3.5/models/props/BR_sky" SPOOKY_SKY_FILE = "phase_3.5/models/props/BR_sky" TITLE_COLOR = (0.3, 0.6, 1.0, 1.0) HOLIDAY_DNA = { ToontownGlobals.WINTER_DECORATIONS: ["phase_8/dna/winter_storage_BR.pdna"], ToontownGlobals.WACKY_WINTER_DECORATIONS: ["phase_8/dna/winter_storage_BR.pdna"], ToontownGlobals.HALLOWEEN_PROPS: ["phase_8/dna/halloween_props_storage_BR.pdna"], ToontownGlobals.SPOOKY_PROPS: ["phase_8/dna/halloween_props_storage_BR.pdna"], } def load(self): ToonHood.load(self) self.fog = Fog("BRFog") def setFog(self): if base.wantFog: self.fog.setColor(0.9, 0.9, 0.9) self.fog.setExpDensity(0.004) render.clearFog() render.setFog(self.fog) self.sky.clearFog() self.sky.setFog(self.fog)
def init(self): """setup calls that can be repeated on code reload""" self.resetNodes() self.base.setBackgroundColor(0, 0, 0) self.base.render.setShaderAuto() # pp shading self.base.render.setAttrib( AntialiasAttrib.make(AntialiasAttrib.MMultisample)) if 1: cam = self.base.render.find("camera") # I don't know how to set cam position f = Fog("fog") f.setColor(0,0,0) f.setLinearRange(18, 25) self.base.render.setFog(f) import videowall reload(videowall) self.videoWall = videowall.VideoWall(self.base.loader, self.base.render) self.cubes = self.base.render.attachNewNode(ModelNode("cubes")) self.cubes.setPos(-4.3, 18, -3) ground = self.makeGround(self.cubes) lights = self.base.render.attachNewNode("lights") self.makeLights(lights) self.centerMessageNode, self.cornerMessageNode = self.makeMessages() self.setLighting(self.currentLighting) self.base.render.ls()
def createSafeZone(self, foo): self.geom = loader.loadModel( 'phase_14/models/neighborhoods/cogtropolis.egg') self.geom.reparentTo(hidden) for i in range(2): bldgSectionNode = render.attachNewNode('bldgSection' + str(i)) bldgSectionNode.setPos(self.bldgSectionData[i][0]) bldgSectionNode.setHpr(self.bldgSectionData[i][1]) for point in self.bldgPoints: bldg = loader.loadModel( 'phase_14/models/props/cogtropolis_big_building_1.egg') bldg.reparentTo(bldgSectionNode) bldg.setPos(point) self.buildingSectionNodes.append(bldgSectionNode) for data in self.tLightData: node = render.attachNewNode('tlight-intersection-holder') node.setPos(data[0]) node.setHpr(data[1]) light = TrafficLight.TrafficLight() light.reparentTo(node) light.startFlashing() light2 = TrafficLight.TrafficLight(1) light2.reparentTo(node) light2.startFlashing() self.trafficLightNodes.append(node) self.trafficLights.append(light) self.trafficLights.append(light2) self.fog = Fog('CogTropolis-fog') self.fog.setColor(0.3, 0.3, 0.3) self.fog.setExpDensity(0.0075) self.geom.flattenMedium() gsg = base.win.getGsg() if gsg: self.geom.prepareScene(gsg)
class CogdoFlyingLevelFog: def __init__(self, level, color=Globals.Level.FogColor): self._level = level self.color = color fogDistance = self._level.quadLengthUnits * max( 1, self._level.quadVisibiltyAhead * 0.2) self.fog = Fog('RenderFog') self.fog.setColor(self.color) self.fog.setLinearRange( fogDistance * Globals.Level.RenderFogStartFactor, fogDistance) self._visible = False self._clearColor = Vec4(base.win.getClearColor()) self._clearColor.setW(1.0) def destroy(self): self.setVisible(False) if hasattr(self, 'fog'): del self.fog def isVisible(self): return self._visible def setVisible(self, visible): self._visible = visible if self._visible: base.win.setClearColor(self.color) render.setFog(self.fog) else: base.win.setClearColor(self._clearColor) render.clearFog()
def load(self): Place.Place.load(self) self.fog = Fog('EstateFog') taskMgr.add(self.__checkCameraUnderwater, 'estate-check-cam-underwater') path = self.loader.geom.find('**/Path') path.setBin('ground', 10, 1) self.parentFSMState.addChild(self.fsm)
def setFogOn(self, fog): self.fogOn = fog if self.fogOn: myFog = Fog('Fog Rendering Fog of Rendering') myFog.setColor(1.0, 0.0, 0.0) myFog.setExpDensity(0.5) self.setFog(myFog) else: self.clearFog()
def set_up(self): from ursina.entity import Entity self.reparent_to(render) self.reflection_map = load_texture(self.reflection_map) self.fog = Fog('fog') self.setFog(self.fog) self.fog_color = color.light_gray self.fog_density = 0
def toggle_smoke(self): from panda3d.core import Fog if self.render.getFog(): self.render.clearFog() else: smoke = Fog("smoke") smoke.setColor(config.smoke_color) smoke.setExpDensity(config.smoke_exp_density) render.setFog(smoke)
def load(self): DistributedEntity.load(self) density = self.getEntityValueFloat("fogdensity") self.fogDensity = density color = self.getEntityValueColor("fogcolor") self.fogNode = Fog('env_fog') self.fogNode.setExpDensity(density) self.fogNode.setColor(color) base.shaderGenerator.setFog(self.fogNode)
def __init__(self): super().__init__(self) self.var1 = 0 self.scene = loader.loadModel("models/world") playerTexture = loader.loadTexture("models/starfoxShip.jpg") self.player = self.scene.find("player") self.player.setTexture(playerTexture) base.setBackgroundColor(0.1, 0.1, 0.1, 1) enemyTexture = loader.loadTexture("models/enemyShip.jpg") self.enemy = self.scene.find("enemy1") self.enemy.setTexture(enemyTexture) self.basePlane = self.scene.find("basePlane") self.scene.reparentTo(self.render) self.player.setPos(50, 50, 3) self.enemy.setPos(50, 55, 0) self.ambient = AmbientLight("ambient") self.ambient.color = (0.1, 0.1, 0.1, 1) self.ambientPath = self.render.attachNewNode(self.ambient) render.setLight(self.ambientPath) self.dirLight = DirectionalLight("dir light") self.dirLight.color = (1, 1, 1, 1) self.dirLightPath = self.render.attachNewNode(self.dirLight) self.dirLightPath.setHpr(0, -90, 0) self.dirLight.setShadowCaster(True, 512, 512) render.setLight(self.dirLightPath) self.pointLight = PointLight("point light") self.pointLight.color = (1, 1, 1, 1) self.pointLightPath = self.render.attachNewNode(self.pointLight) self.pointLightPath.setPos(50, 52.5, 4) self.pointLight.attenuation = (.5, 0, 0) self.pointLight.setShadowCaster(True, 1024, 1024) self.render.setLight(self.pointLightPath) self.fog = Fog("fog") self.fog.setColor(0.1, 0.1, 0.1) self.fog.setExpDensity(.3) self.fog.setLinearRange(150, 300) self.fog.setLinearFallback(45, 160, 320) self.render.setFog(self.fog) self.render.setShaderAuto() self.render.setAntialias(AntialiasAttrib.MAuto) filters = CommonFilters(base.win, base.cam) filters.setBloom(size="large") filters.setAmbientOcclusion(strength=0.6, falloff=0.0005, radius=0.1) filters.setCartoonInk(separation=2, color=(0, 0, 0, 1)) self.taskMgr.add(self.update, "update")
def __init__(self, r, g, b, min_dist, max_dist): self.fog = Fog("GlobalFog") self.fog.setColor(r, g, b) dist_base = 100 if G.debug else 0 min_dist += dist_base max_dist += dist_base assert min_dist < max_dist self.fog.set_linear_range(min_dist, max_dist) self.fog.setLinearFallback(15, min_dist, max_dist) G.setBackgroundColor(r, g, b, 1) G.render.setFog(self.fog) self._enabled = True
def load_fog(self): """ Loads the fog seen in the distance from the island """ self.world_fog = Fog('world_fog') self.world_fog.set_color( Vec3(SKY_COLOR.get_x(), SKY_COLOR.get_y(), SKY_COLOR.get_z())) self.world_fog.set_linear_range(0, 320) self.world_fog.set_linear_fallback(45, 160, 320) self.world_fog_path = self.render.attach_new_node(self.world_fog) self.render.set_fog(self.world_fog)
def __init__(self, level, color=Globals.Level.FogColor): self._level = level self.color = color fogDistance = self._level.quadLengthUnits * max( 1, self._level.quadVisibiltyAhead * 0.2) self.fog = Fog('RenderFog') self.fog.setColor(self.color) self.fog.setLinearRange( fogDistance * Globals.Level.RenderFogStartFactor, fogDistance) self._visible = False self._clearColor = Vec4(base.win.getClearColor()) self._clearColor.setW(1.0)
def startSuitEffect(self): self.stopSuitEffect() light = AmbientLight("suitLight") light.setColor(Vec4(*self.suitLightColor)) self.suitLight = render.attachNewNode(light) render.setLight(self.suitLight) self.suitFog = Fog("suitFog") self.suitFog.setColor(*self.suitFogData[0]) self.suitFog.setExpDensity(self.suitFogData[1]) render.setFog(self.suitFog) self.createSpookySky() Hood.startSky(self)
class BossbotHQ(CogHood.CogHood): def __init__(self, parentFSM, doneEvent, dnaStore, hoodId): CogHood.CogHood.__init__(self, parentFSM, doneEvent, dnaStore, hoodId) self.id = ToontownGlobals.BossbotHQ self.cogHQLoaderClass = BossbotCogHQLoader.BossbotCogHQLoader self.storageDNAFile = None self.skyFile = 'phase_9/models/cogHQ/cog_sky' self.titleColor = (0.5, 0.5, 0.5, 1.0) return def load(self): CogHood.CogHood.load(self) self.sky.hide() self.fog = Fog('BossbotHQFog') self.sky.hide() self.parentFSM.getStateNamed('BossbotHQ').addChild(self.fsm) def unload(self): self.parentFSM.getStateNamed('BossbotHQ').removeChild(self.fsm) del self.cogHQLoaderClass CogHood.CogHood.unload(self) self.fog = None def enter(self, *args): CogHood.CogHood.enter(self, *args) localAvatar.setCameraFov(ToontownGlobals.CogHQCameraFov) base.camLens.setNearFar(ToontownGlobals.BossbotHQCameraNear, ToontownGlobals.BossbotHQCameraFar) self.setFog() def exit(self): localAvatar.setCameraFov(settings['fieldofview']) base.camLens.setNearFar(ToontownGlobals.DefaultCameraNear, ToontownGlobals.DefaultCameraFar) CogHood.CogHood.exit(self) def spawnTitleText(self, zoneId, floorNum=None): if ZoneUtil.isMintInteriorZone(zoneId): text = '%s\n%s' % (ToontownGlobals.StreetNames[zoneId][-1], TTLocalizer.MintFloorTitle % (floorNum + 1)) self.doSpawnTitleText(text) else: CogHood.CogHood.spawnTitleText(self, zoneId) def setFog(self): if base.wantFog: self.fog.setColor(0.1, 0.1, 0.1) self.fog.setExpDensity(0.004) render.clearFog() render.setFog(self.fog) self.sky.clearFog() self.sky.setFog(self.fog)
def __init__(self): self.fog = None self.fogMode = None print("Initialized Fog Manager") self.fog = Fog("ActiveFog") self.fog.setColor(1, 1, 1) self.fogTypes = { 0: Fog.MExponential, 1: Fog.MExponentialSquared, 2: Fog.MLinear }
def __init__(self, _heightField): texture = loader.loadTexture("ground_tex.png") self.zScale = 45 self.terrain = GeoMipTerrain("BasicTerrain") self.terrain.setHeightfield(_heightField) # Dynamic settings? self.terrain.setBlockSize(16) self.terrain.setNear(20) self.terrain.setFar(100) self.terrain.setFocalPoint(base.camera) # Settings self.terrain.getRoot().setSz(self.zScale) self.terrain.getRoot().setTexture(texture) self.terrain.getRoot().reparentTo(render) self.terrain.generate() self.terrainSize = (self.terrain.heightfield().getReadXSize(), self.terrain.heightfield().getReadYSize()) print "Terrain Size:", self.terrainSize taskMgr.add(self.terrainTask, "TerrainTask") self.skydome = loader.loadModel("Skydome") self.skydome.setDepthTest(False) self.skydome.setAttrib(CullBinAttrib.make("skydomeBin", 1000)) self.skydome.reparentTo(camera) self.skydome.setScale(2) self.skydome.setPos(0, 0, -0.5) self.skydome.setCollideMask(BitMask32.allOff()) taskMgr.add(self.skydomeTask, "paperplanet_skydome") # Add some fancy fog self.fog = Fog("Fog Name") self.fog.setColor(0.4,0.2,0.3) self.fog.setExpDensity(0.015) render.setFog(self.fog) # Some Test light dlight = DirectionalLight("dlight") dlight.setColor(VBase4(0.8, 0.8, 0.5, 1)) dlnp = render.attachNewNode(dlight) dlnp.setHpr(0, -60, 0) render.setLight(dlnp) # Add basic blacksmith hut tmp = loader.loadModel("blacksmith_hut") tmp.reparentTo(render) tmp.setPos(164.054, 340.92, 11.3384)
def loadFog(self, fogDensity): fog = Fog('distanceFog') fog.setColor(0, 0, 0) fog.setExpDensity(fogDensity * (math.pow(10, -2))) render.setFog(fog) fog.setOverallHidden(False) #fog.getExpDensity() print(fog.getExpDensity()) print("tried to load fog") return fog
def begin(self): base.setBackgroundColor( self.environment['colourBackground'] ) alight = AmbientLight('AmbientLight') alight.setColor(self.environment['colourAmbient'] ) alnp = self.sceneNode.attachNewNode(alight) self.sceneNode.setLight(alnp) if self.environment['fog']: fog = Fog( 'sceneName' ) fog.setColor( self.environment['fog']['color'] ) if self.environment['fog']['mode'] == "linear": fog.setLinearRange(self.environment['fog']['linearStart']*1000,self.environment['fog']['linearEnd']*1000) else: fog.setExpDensity( self.environment['fog']['expDensity'] ) self.sceneNode.setFog(fog) [self.createNode(props) for props in self.nodes] [self.createLight(props) for props in self.lights] [self.createCamera(props) for props in self.cameras] [self.createEntity(props) for props in self.entities] # [self.createStaticGeoms(props) for props in self.staticGeoms] self.sceneNode.clearModelNodes() self.sceneNode.flattenStrong() self.sceneNode.setShaderAuto()
def load(self): Place.Place.load(self) self.parentFSM.getStateNamed('playground').addChild(self.fsm) if base.cr.holidayManager.getHoliday() == HolidayType.CHRISTMAS: self.particles = ParticleLoader.loadParticleEffect('phase_8/etc/snowdisk.ptf') self.particles.setPos(0, 0, 5) self.particlesRender = self.loader.geom.attachNewNode('snowRender') self.particlesRender.setDepthWrite(0) self.particlesRender.setBin('fixed', 1) self.particles.start(parent=camera, renderParent=self.particlesRender) self.fog = Fog('snowFog') self.fog.setColor(0.486, 0.784, 1) self.fog.setExpDensity(0.003) base.render.setFog(self.fog)
def load(self): if self.loaded: return self.particlesRender = render.attachNewNode('snowRender') self.particlesRender.setDepthWrite(0) self.particlesRender.setBin('fixed', 1) self.particlesRender.setLightOff(1) self.particlesRender.setMaterialOff(1) self.fog = Fog('snowFog') self.fog.setColor(0.486, 0.784, 1) self.fog.setExpDensity(0.003) self.loaded = True
def __init__(self, arenaNr): arenaPath = "levels/arena{}/".format(arenaNr) self.arena = loader.loadModel(arenaPath + "arena") self.arena.setScale(2) self.arena.reparentTo(render) self.arena.hide() ambientLight = AmbientLight("ambient_light") ambientLight.setColor((0.2, 0.2, 0.2, 1)) self.alnp = render.attachNewNode(ambientLight) sunLens = PerspectiveLens() sunLens.setFilmSize(50) sun = DirectionalLight("sun") sun.setColor((1, 1, 1, 1)) sun.setShadowCaster(True, 2048, 2048) sun.setScene(render) #sun.showFrustum() self.ambientSound = None self.levelParticles = None if arenaNr == 1: sunLens.setNearFar(25, 45) sun.setLens(sunLens) self.sunNp = render.attachNewNode(sun) self.sunNp.setPos(-10, -10, 30) self.sunNp.lookAt(0, 0, 0) self.ambientSound = loader.loadSfx( "assets/audio/ambientLevel1.ogg") self.ambientSound.setLoop(True) self.fog = Fog("Outside Fog") self.fog.setColor(0.3, 0.3, 0.5) self.fog.setExpDensity(0.025) self.levelParticles = ParticleEffect() self.levelParticles.loadConfig("assets/fx/Leafs.ptf") self.levelParticles.start(parent=render2d, renderParent=render2d) elif arenaNr == 2: sunLens.setFov(120, 40) sunLens.setNearFar(2, 10) sun.setLens(sunLens) self.sunNp = render.attachNewNode(sun) self.sunNp.setPos(0, 0, 5) self.sunNp.lookAt(0, 0, 0) self.fog = Fog("Temple Fog") self.fog.setColor(0, 0, 0) self.fog.setExpDensity(0.065)
def __init__(self, arenaNr): arenaPath = "levels/arena%d/" % arenaNr self.arena = loader.loadModel(arenaPath + "arena") self.arena.setScale(2) self.arena.reparentTo(render) self.arena.hide() ambientLight = AmbientLight("ambient_light") ambientLight.setColor((0.2, 0.2, 0.2, 1)) self.alnp = render.attachNewNode(ambientLight) sunLens = PerspectiveLens() sunLens.setFilmSize(50) sun = DirectionalLight("sun") sun.setColor((1, 1, 1, 1)) sun.setShadowCaster(True, 2048, 2048) sun.setScene(render) #sun.showFrustum() self.ambientSound = None self.levelParticles = None if arenaNr == 1: sunLens.setNearFar(25,45) sun.setLens(sunLens) self.sunNp = render.attachNewNode(sun) self.sunNp.setPos(-10, -10, 30) self.sunNp.lookAt(0,0,0) self.ambientSound = loader.loadSfx("assets/audio/ambientLevel1.ogg") self.ambientSound.setLoop(True) self.fog = Fog("Outside Fog") self.fog.setColor(0.3,0.3,0.5) self.fog.setExpDensity(0.025) self.levelParticles = ParticleEffect() self.levelParticles.loadConfig("assets/fx/Leafs.ptf") self.levelParticles.start(parent = render2d, renderParent = render2d) elif arenaNr == 2: sunLens.setFov(120, 40) sunLens.setNearFar(2,10) sun.setLens(sunLens) self.sunNp = render.attachNewNode(sun) self.sunNp.setPos(0, 0, 5) self.sunNp.lookAt(0,0,0) self.fog = Fog("Temple Fog") self.fog.setColor(0,0,0) self.fog.setExpDensity(0.065)
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 setupFog(self): self.fog = Fog("fog") self.fog.setColor(FOG_COLOR) self.fog.setExpDensity(FOG_EXP_DENSITY) self.render.setFog(self.fog)
def createSafeZone(self, foo): self.geom = loader.loadModel('phase_14/models/neighborhoods/cogtropolis.egg') self.geom.reparentTo(hidden) for i in range(2): bldgSectionNode = render.attachNewNode('bldgSection' + str(i)) bldgSectionNode.setPos(self.bldgSectionData[i][0]) bldgSectionNode.setHpr(self.bldgSectionData[i][1]) for point in self.bldgPoints: bldg = loader.loadModel('phase_14/models/props/cogtropolis_big_building_1.egg') bldg.reparentTo(bldgSectionNode) bldg.setPos(point) self.buildingSectionNodes.append(bldgSectionNode) for data in self.tLightData: node = render.attachNewNode('tlight-intersection-holder') node.setPos(data[0]) node.setHpr(data[1]) light = TrafficLight.TrafficLight() light.reparentTo(node) light.startFlashing() light2 = TrafficLight.TrafficLight(1) light2.reparentTo(node) light2.startFlashing() self.trafficLightNodes.append(node) self.trafficLights.append(light) self.trafficLights.append(light2) self.fog = Fog('CogTropolis-fog') self.fog.setColor(0.3, 0.3, 0.3) self.fog.setExpDensity(0.0075) self.geom.flattenMedium() gsg = base.win.getGsg() if gsg: self.geom.prepareScene(gsg)
def load(self): base.cr.renderFrame() base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4.0 / 3.0)) self.__setupStageToon() self.world = loader.loadModel('phase_9/models/cogHQ/SellbotHQExterior.bam') self.world.reparentTo(base.render) self.world.setPos(0, 227.09, -25.36) self.sky = loader.loadModel('phase_9/models/cogHQ/cog_sky.bam') self.sky.setScale(1) self.sky.reparentTo(base.render) self.sky.find('**/InnerGroup').removeNode() self.fog = Fog('charSelectFog') self.fog.setColor(0.2, 0.2, 0.2) self.fog.setExpDensity(0.003) base.render.setFog(self.fog) self.title = DirectLabel(text=self.TITLE, text_font=CIGlobals.getMickeyFont(), text_fg=(1, 0.9, 0.1, 1), relief=None, text_scale=0.13, pos=(0, 0, 0.82)) self.charNameLabel = OnscreenText(text='', font=CIGlobals.getMickeyFont(), pos=(-0.25, 0.5, 0), fg=(1, 0.9, 0.1, 1.0)) self.charNameLabel.hide() self.playOrCreateButton = DirectButton(text='', pos=(0.8125, 0, -0.735), command=self.__action, geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01)) self.playOrCreateButton.hide() self.deleteButton = DirectButton(text='Delete', pos=(0.8125, 0, -0.835), command=self.__action, extraArgs=['delete'], geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01)) self.deleteButton.hide() self.quitButton = DirectButton(text='Quit', pos=(-1.1, 0, -0.925), command=self.__action, extraArgs=['quit'], text_scale=0.06, geom=CIGlobals.getDefaultBtnGeom(), relief=None, text_pos=(0, -0.01)) textRolloverColor = Vec4(1, 1, 0, 1) textDownColor = Vec4(0.5, 0.9, 1, 1) textDisabledColor = Vec4(0.4, 0.8, 0.4, 1) for slot in range(6): if self.avChooser.hasToonInSlot(slot): choice = self.avChooser.getAvChoiceBySlot(slot) text = choice.name else: text = self.NO_TOON btn = DirectButton(relief=None, text=text, text_scale=0.06, text_align=TextNode.ALeft, text1_bg=textDownColor, text2_bg=textRolloverColor, text3_fg=textDisabledColor, textMayChange=0, command=self.__handleCharButton, extraArgs=[slot], text_pos=(0, 0, 0.0)) btn.setPythonTag('slot', slot) self.charButtons.append(btn) btn['state'] = DGG.NORMAL gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam') listXorigin = -0.02 listFrameSizeX = 0.625 listZorigin = -0.96 listFrameSizeZ = 1.04 arrowButtonScale = 1.3 itemFrameXorigin = -0.237 itemFrameZorigin = 0.365 buttonXstart = itemFrameXorigin + 0.293 self.charList = DirectScrolledList(relief=None, pos=(0.75, 0, 0.08), incButton_image=(gui.find('**/FndsLst_ScrollUp'), gui.find('**/FndsLst_ScrollDN'), gui.find('**/FndsLst_ScrollUp_Rllvr'), gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_scale=(arrowButtonScale, arrowButtonScale, -arrowButtonScale), incButton_pos=(buttonXstart, 0, itemFrameZorigin - 0.999), incButton_image3_color=Vec4(1, 1, 1, 0.2), decButton_image=(gui.find('**/FndsLst_ScrollUp'), gui.find('**/FndsLst_ScrollDN'), gui.find('**/FndsLst_ScrollUp_Rllvr'), gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_scale=(arrowButtonScale, arrowButtonScale, arrowButtonScale), decButton_pos=(buttonXstart, 0, itemFrameZorigin + 0.125), decButton_image3_color=Vec4(1, 1, 1, 0.2), itemFrame_pos=(itemFrameXorigin, 0, itemFrameZorigin), itemFrame_scale=1.0, itemFrame_relief=DGG.SUNKEN, itemFrame_frameSize=(listXorigin, listXorigin + listFrameSizeX, listZorigin, listZorigin + listFrameSizeZ), itemFrame_frameColor=(0.85, 0.95, 1, 1), itemFrame_borderWidth=(0.01, 0.01), numItemsVisible=15, forceHeight=0.075, items=self.charButtons) base.camera.setPos(75.12, 63.22, -23) base.camera.setHpr(26.57, 9.62, 0) return
def load(self): self.hitEagleSfx = base.loadSfx( 'phase_4/audio/sfx/AA_drop_anvil_miss.ogg') self.hitObstacleSfx = base.loadSfx( 'phase_4/audio/sfx/MG_cannon_hit_tower.ogg') self.toonOof = base.loadSfx( 'phase_5/audio/sfx/tt_s_ara_cfg_toonHit.ogg') self.cannonMoveSfx = base.loadSfx( 'phase_4/audio/sfx/MG_cannon_adjust.ogg') self.cannonMoveSfx.setLoop(True) self.fallSfx = base.loadSfx( 'phase_4/audio/sfx/MG_sfx_vine_game_fall.ogg') self.setMinigameMusic('phase_9/audio/bgm/CHQ_FACT_bg.mid') self.setDescription( 'Shoot as many flying Legal Eagles as you can using your cannon. Use the arrow keys to aim your cannon and press the control key to fire.' ) self.setWinnerPrize(175) self.setLoserPrize(20) base.setBackgroundColor(*self.bgColor) self.world = loader.loadModel(self.worldModelPath) for nodeName in self.nodesToStash: node = self.world.find('**/' + nodeName) node.removeNode() self.world.find('**/tt_m_ara_cfg_clump7:clump7').setY(30.0) self.world.find('**/tt_m_ara_cfg_eagleNest:eagleNest_mesh').setY(30.0) self.world.setColorScale(0.75, 0.75, 0.75, 1.0) self.world.reparentTo(base.render) self.world.setZ(-5.0) for i in range(len(self.platformPositions.keys())): platform = loader.loadModel('phase_9/models/cogHQ/platform1.bam') platform.find('**/platformcollision').removeNode() platform.reparentTo(render) platform.setPos(*self.platformPositions[i]) self.platforms.append(platform) for triggerName in self.triggers: trigger = self.world.find('**/' + triggerName) trigger.setCollideMask(CIGlobals.WallBitmask) self.accept('enter' + triggerName, self.__handleHitWall) self.fog = Fog('DEagleGame-sceneFog') self.fog.setColor(*self.bgColor) self.fog.setExpDensity(0.01) render.setFog(self.fog) DistributedMinigame.load(self)
def __init__(self): self._is_playing = False self._nextclick = 0 background = NodePath("background") background.setDepthTest(0) background.setDepthWrite(0) self._snd1 = loader.loadSfx("sounds/Stench/hollow.ogg") # noqa: F821 self._snd1.setLoop(True) self._snd2 = loader.loadSfx("sounds/Stench/creepy.ogg") # noqa: F821 self._snd2.setLoop(True) self._snd3 = loader.loadSfx("sounds/Stench/breathing.ogg") # noqa: F821 self._snd3.setLoop(True) self._snd4 = loader.loadSfx("sounds/Stench/teeth.ogg") # noqa: F821 self._snd4.setLoop(True) self._stench = ParticleEffect() self._stench.loadConfig("effects/stench.ptf") self._stench.setPos(0, 3.5, 0.3) self._fog = Fog("Stench") self._fog.setColor(1, 0.69, 0) self._fog.setExpDensity(0.1) tex = Texture() tex.setMinfilter(Texture.FTLinear) base.win.addRenderTexture( # noqa: F821 tex, GraphicsOutput.RTMTriggeredCopyTexture ) taskMgr.add(self._snapshot, "tex_snapshot") # noqa: F821 self._bcard = base.win.getTextureCard() # noqa: F821 self._bcard.reparentTo(background) # noqa: F821 self._bcard.setTransparency(1) self._bcard.setColor(1, 1, 1, 1) self._bcard.setScale(1) self._bcard.hide() self._fcard = base.win.getTextureCard() # noqa: F821 self._fcard.reparentTo(base.render2d) # noqa: F821 self._fcard.setTransparency(1) self._fcard.setColor(1, 1, 1, 0.4) self._fcard.setScale(1.08) self._fcard.hide()
class Scene(NodePath): def __init__(self): super().__init__('scene') self.render = None self.world = None self.camera = None self.ui_camera = None self.entities = [] self.hidden = NodePath('hidden') self.reflection_map = 'reflection_map_3' def set_up(self): from ursina.entity import Entity self.reparent_to(render) self.reflection_map = load_texture(self.reflection_map) self.fog = Fog('fog') self.setFog(self.fog) self.fog_color = color.light_gray self.fog_density = 0 def clear(self): from ursina.ursinastuff import destroy to_destroy = [e for e in self.entities if not e.eternal] to_keep = [e for e in self.entities if e.eternal] for d in to_destroy: try: print('destroying:', d.name) destroy(d) except Exception as e: print('failed to destroy entity', e) self.entities = to_keep from ursina import application application.sequences.clear() @property def fog_color(self): return self.fog.getColor() @fog_color.setter def fog_color(self, value): self.fog.setColor(value) @property def fog_density(self): return self._fog_density @fog_density.setter # set to a number for exponential density or (start, end) for linear. def fog_density(self, value): self._fog_density = value if isinstance(value, tuple): # linear fog self.fog.setLinearRange(value[0], value[1]) else: self.fog.setExpDensity(value)
def __init__(self, level, color = Globals.Level.FogColor): self._level = level self.color = color fogDistance = self._level.quadLengthUnits * max(1, self._level.quadVisibiltyAhead * 0.2) self.fog = Fog('RenderFog') self.fog.setColor(self.color) self.fog.setLinearRange(fogDistance * Globals.Level.RenderFogStartFactor, fogDistance) self._visible = False self._clearColor = Vec4(base.win.getClearColor()) self._clearColor.setW(1.0)
def load(self): self.fog = Fog('PartyFog') Place.Place.load(self) if hasattr(base.localAvatar, 'aboutToPlanParty') and base.localAvatar.aboutToPlanParty: if not hasattr(self, 'partyPlanner') or self.partyPlanner is None: self.partyPlanner = PartyPlanner.PartyPlanner( self.partyPlannerDoneEvent) self.parentFSMState.addChild(self.fsm) return
def createWorld(self): self.deleteWorld() self.sky = loader.loadModel("phase_3.5/models/props/BR_sky.bam") self.sky.reparentTo(render) self.sky.setZ(-40) self.sky.setFogOff() self.arena = loader.loadModel("phase_4/models/minigames/dodgeball_arena.egg") self.arena.reparentTo(render) self.arena.setScale(0.75) self.arena.find('**/team_divider').setBin('ground', 18) self.arena.find('**/floor').setBin('ground', 18) self.arena.find('**/team_divider_coll').setCollideMask(CIGlobals.FloorBitmask) for data in DistributedDodgeballGame.TreeData: code = data[0] pos = data[1] tree = self.__getSnowTree(code) tree.reparentTo(self.arena) tree.setPos(pos) self.trees.append(tree) for i in xrange(len(DistributedDodgeballGame.SnowballData)): snowdata = DistributedDodgeballGame.SnowballData[i] snowball = Snowball(self, i) snowball.load() snowball.reparentTo(render) snowball.setPos(snowdata) self.snowballs.append(snowball) self.snow = ParticleLoader.loadParticleEffect('phase_8/etc/snowdisk.ptf') self.snow.setPos(0, 0, 5) self.snowRender = self.arena.attachNewNode('snowRender') self.snowRender.setDepthWrite(0) self.snowRender.setBin('fixed', 1) self.snow.start(camera, self.snowRender) self.fog = Fog('snowFog') self.fog.setColor(0.486, 0.784, 1) self.fog.setExpDensity(0.003) render.setFog(self.fog)
def __init__(self, name = "tunnel", fogName = "distanceFog", axis = "Y", direction = "+", scale = 1.0, tunnelTime = 2, positionX = 0, positionY = 0, positionZ = 0, fogIntensity = .8, fogColorR = 255, fogColorG = 255, fogColorB = 255, tunnelImage="tunnel/tunnel.png", tunnelModel="tunnel/tunnel", numSegments="4", relTunnelLength="50", segScale1=".155", segScale2=".155", segscale3=".305"): if direction == "-": direction = -1 elif direction == "+": direction = 1 else: print "Unknown direction. Assuming negative." direction = -1 #First, set the fog. self.fog = Fog(fogName) #color it. self.fog.setColor=Color(r = fogColorR, g = fogColorG, b = fogColorB) #Intensity. self.fog.setExpDensity=(fogIntensity) #And parent it to the render. #Fog is needed so hat you can't see the tunnel end. render.setFog(self.fog) #Copypasted from tutorial and modified. #Creates the list [None, None, None, None] ##As far as I can tell, this is used to loop the tunnels and easily reference all 4. self.tunnel = [None for i in range(numSegments)] ##Texture it. tex = loader.loadTexture(findTexture(tunnelImage)) for x in range(numSegments): #Load a copy of the tunnel self.tunnel[x] = loader.loadModel(tunnelModel) selftunnel[x].setTexture(tex, 1) ##Changeme, need to figure out how to retexture #The front segment needs to be attached to render ##So it actually gets rendered. if x == 0: self.tunnel[x].reparentTo(render) #The rest of the segments parent to the previous one, so that by moving #the front segement, the entire tunnel is moved ##For easy chaining. else: self.tunnel[x].reparentTo(self.tunnel[x-1]) #We have to offset each segment by its length so that they stack onto #each other. Otherwise, they would all occupy the same space. ###! Check these values! if axis == "Z": self.tunnel[x].setHPR(0,0,0) self.tunnel[x].setPos(0, 0, direction*relTunnelLength) elif axis == "Y": self.tunnel[x].setHPR(-pi,0,0) self.tunnel[x].setPos(0, direction*relTunnelLength, 0) elif axis == "X": self.tunnel[x].setHPR(pi,0,0) self.tunnel[x].setPos(direction*relTunnelLength, 0, 0) else: print "Invalid direction. Not uppercase?" print "Defaulting to Y" self.tunnel[x].setHPR(-pi,0,0) self.contTunnel()
class LoveFog: """St. Valentines Day mode effect.""" def __init__(self): self.is_on = False self._love_fog = Fog("Love") self._love_fog.setColor(0.7, 0.42, 0.49) self._love_fog.setExpDensity(0.25) def switch(self): """Switch on/off the effect.""" if self.is_on: render.clearFog() # noqa: F821 base.train.love_particles(False) # noqa: F821 if base.effects_mgr.stench_effect.is_playing: # noqa: F821 base.effects_mgr.stench_effect.set_fog() # noqa: F821 else: render.setFog(self._love_fog) # noqa: F821 base.train.love_particles(True) # noqa: F821 self.is_on = not self.is_on
def init(self): """setup calls that can be repeated on code reload""" self.resetNodes() self.base.setBackgroundColor(0, 0, 0) self.base.render.setShaderAuto() # pp shading self.base.render.setAttrib( AntialiasAttrib.make(AntialiasAttrib.MMultisample)) if 1: cam = self.base.render.find("camera") # I don't know how to set cam position f = Fog("fog") f.setColor(0, 0, 0) f.setLinearRange(18, 25) self.base.render.setFog(f) import videowall reload(videowall) self.videoWall = videowall.VideoWall(self.base.loader, self.base.render) self.cubes = self.base.render.attachNewNode(ModelNode("cubes")) self.cubes.setPos(-4.3, 18, -3) ground = self.makeGround(self.cubes) lights = self.base.render.attachNewNode("lights") self.makeLights(lights) self.centerMessageNode, self.cornerMessageNode = self.makeMessages() self.setLighting(self.currentLighting) self.base.render.ls()
class BossbotHQ(CogHood): notify = directNotify.newCategory("BossbotHQ") ID = ToontownGlobals.BossbotHQ LOADER_CLASS = BossbotCogHQLoader def load(self): CogHood.load(self) self.fog = Fog("BossbotHQFog") self.sky.hide() def enter(self, requestStatus): CogHood.enter(self, requestStatus) base.localAvatar.setCameraFov(ToontownGlobals.CogHQCameraFov) base.camLens.setNearFar(ToontownGlobals.BossbotHQCameraNear, ToontownGlobals.BossbotHQCameraFar) self.setFog() def spawnTitleText(self, zoneId, floorNum=None): if ZoneUtil.isMintInteriorZone(zoneId): text = "%s\n%s" % (ToontownGlobals.StreetNames[zoneId][-1], TTLocalizer.MintFloorTitle % (floorNum + 1)) self.doSpawnTitleText(text) else: CogHood.spawnTitleText(self, zoneId) def setFog(self): if base.wantFog: self.fog.setColor(0.1, 0.1, 0.1) self.fog.setExpDensity(0.004) render.clearFog() render.setFog(self.fog) self.sky.clearFog() self.sky.setFog(self.fog)
def createEnvironment(self): # Fog expfog = Fog("scene-wide-fog") expfog.setColor(0.5, 0.5, 0.5) expfog.setExpDensity(0.002) self.render.setFog(expfog) # Sky skysphere = self.loader.loadModel("assets/blue-sky-sphere") skysphere.setEffect(CompassEffect.make(self.render)) skysphere.setScale(0.08) skysphere.reparentTo(self.camera) # Lights ambientLight = AmbientLight("ambientLight") ambientLight.setColor(Vec4(0.6, 0.6, 0.6, 1)) self.render.setLight(self.render.attachNewNode(ambientLight)) directionalLight = DirectionalLight("directionalLight") directionalLight.setColor(VBase4(0.8, 0.8, 0.5, 1)) dlnp = self.render.attachNewNode(directionalLight) dlnp.setPos(0, 0, 260) dlnp.lookAt(self.player) self.render.setLight(dlnp) # Water self.water = self.loader.loadModel("assets/square.egg") self.water.setSx(self.worldsize * 2) self.water.setSy(self.worldsize * 2) self.water.setPos(self.worldsize / 2, self.worldsize / 2, 25) self.water.setTransparency(TransparencyAttrib.MAlpha) newTS = TextureStage("1") self.water.setTexture(newTS, self.loader.loadTexture("assets/water.png")) self.water.setTexScale(newTS, 4) self.water.reparentTo(self.render) LerpTexOffsetInterval(self.water, 200, (1, 0), (0, 0), textureStage=newTS).loop()
def __init__(self): ShowBase.__init__(self) self.text = OnscreenText \ ( parent = base.a2dBottomCenter, align=TextNode.ARight, fg=(1, 1, 1, 1), pos=(0.2, 1.), scale=0.1, shadow=(0, 0, 0, 0.5) ) self.setBackgroundColor(0, 0, 0) self.disableMouse() self.fog = Fog('distanceFog') self.fog.setColor(0, 0, 0) self.fog.setExpDensity(.002) # self.queue = CollisionHandlerQueue() self.trav = CollisionTraverser('traverser') base.cTrav = self.trav self.loadSky() self.reloadGame() self.keyMap = {'left' : 0, 'right' : 0, 'up' : 0, 'down' : 0} self.gamePause = False # self.accept('escape', sys.exit) self.accept('p', self.pause) self.accept('r', self.reloadGame) self.accept('arrow_left', self.setKey, ['left', True]) self.accept('arrow_right', self.setKey, ['right', True]) self.accept('arrow_up', self.setKey, ['up', True]) self.accept('arrow_down', self.setKey, ['down', True]) self.accept('arrow_left-up', self.setKey, ['left', False]) self.accept('arrow_right-up', self.setKey, ['right', False]) self.accept('arrow_up-up', self.setKey, ['up', False]) self.accept('arrow_down-up', self.setKey, ['down', False]) # taskMgr.add(self.moveShip, 'moveShip') taskMgr.add(self.moveAsteroids, 'moveAsteroids') taskMgr.add(self.handleCollisions, 'handleCollisions') # if DEBUG: self.trav.showCollisions(render) render.find('**/ship_collision').show() for asteroid in render.findAllMatches('**/asteroid_collision*'): asteroid.show()
def loadFog(self): self.hasFog = True if self.isUrbanTrack: base.camLens.setFar(650) else: base.camLens.setFar(650) self.dummyNode = render.attachNewNode('dummyNode') if base.wantFog: self.fog = Fog('TrackFog') self.fog.setColor(Vec4(0.6, 0.7, 0.8, 1.0)) if self.isUrbanTrack: self.fog.setLinearRange(200.0, 650.0) else: self.fog.setLinearRange(200.0, 800.0) render.setFog(self.fog) self.sky.setScale(1.725) self.sky.reparentTo(self.dummyNode)
def __init__(self): ShowBase.__init__(self) base.disableMouse() self.camera.setPosHpr(0, 0, 10, 0, -90, 0) self.setBackgroundColor(0, 0, 0) self.fog = Fog('distanceFog') self.fog.setColor(0, 0, 0) self.fog.setExpDensity(.08) render.setFog(self.fog) self.keyMap = {'left' : 0, 'right' : 0, 'up' : 0, 'down' : 0} # self.accept('escape', sys.exit) self.accept('arrow_left', self.setKey, ['left', True]) self.accept('arrow_right', self.setKey, ['right', True]) self.accept('arrow_up', self.setKey, ['up', True]) self.accept('arrow_down', self.setKey, ['down', True]) self.accept('arrow_left-up', self.setKey, ['left', False]) self.accept('arrow_right-up', self.setKey, ['right', False]) self.accept('arrow_up-up', self.setKey, ['up', False]) self.accept('arrow_down-up', self.setKey, ['down', False]) self.queue = CollisionHandlerQueue() self.trav = CollisionTraverser('traverser') base.cTrav = self.trav # self.makeTunnel() self.makeSphere() self.continueTunnel() # self.crystals = [] for _ in xrange(CRYSTALS_CNT): self.makeRandomCrystal(randint(1, TUNNEL_CNT - 1)) self.collisionCnt = 0 # taskMgr.add(self.moveSphere, 'moveSphere') taskMgr.add(self.handleCollisions, 'handleCollisions') # if DEBUG: self.trav.showCollisions(render) render.find('**/sphere_collision').show()
def __init__(self): # A few window settings base.disableMouse() camera.setPosHpr(0, 0.5, 10, 0, -100, 0) #Vary this base.setBackgroundColor(0, 0.5, 1) # Load the Boeing707 self.scale = 0.04 self.xPos = 0.0 self.yPos = 0.0 self.tilt = 0.0 self.lift = 0.0 self.plane = loader.loadModel('./models/plane/boeing707') self.plane.reparentTo(render) self.plane.setScale(self.scale, self.scale, self.scale) self.plane.setPosHpr(self.xPos, -0.7 + self.yPos, 0, 0, 270 + self.lift, self.tilt) # Load fog into the view self.fog = Fog('distanceFog') self.fog.setColor(0, 0.5, 1) self.fog.setExpDensity(.08) render.setFog(self.fog) # Load the tunnel and keep it running infinitely self.initTunnel() self.contTunnel() # Key mappings self.accept('escape', sys.exit) self.accept('+', self.scaleUp) self.accept('-', self.scaleDown) try: self.ser = serial.Serial('/dev/ttyUSB0', 9600) taskMgr.add(self.serialTask, "serialTask") except: print("Could not open Serial port")
def load(self): if self._isLoaded: return self.timer = ToontownTimer.ToontownTimer() self.timer.stash() self.model = loader.loadModel(CogdoBarrelRoomConsts.BarrelRoomModel) self.model.setPos(*CogdoBarrelRoomConsts.BarrelRoomModelPos) self.model.reparentTo(render) self.model.stash() self.dummyElevInNode = self.model.attachNewNode('elevator-in') self.dummyElevInNode.hide() self.entranceNode = self.model.attachNewNode('door-entrance') self.entranceNode.setPos(0, -65, 0) self.nearBattleNode = self.model.attachNewNode('near-battle') self.nearBattleNode.setPos(0, -25, 0) self.rewardUi = CogdoBarrelRoomRewardPanel.CogdoBarrelRoomRewardPanel() self.hideRewardUi() self.stomperSfx = base.loadSfx(CogdoBarrelRoomConsts.StomperSound) self.fog = Fog('barrel-room-fog') self.fog.setColor(CogdoBarrelRoomConsts.BarrelRoomFogColor) self.fog.setLinearRange(*CogdoBarrelRoomConsts.BarrelRoomFogLinearRange) self._isLoaded = True
def load(self): self.hitEagleSfx = base.loadSfx('phase_4/audio/sfx/AA_drop_anvil_miss.mp3') self.hitObstacleSfx = base.loadSfx('phase_4/audio/sfx/MG_cannon_hit_tower.mp3') self.toonOof = base.loadSfx('phase_5/audio/sfx/tt_s_ara_cfg_toonHit.mp3') self.cannonMoveSfx = base.loadSfx('phase_4/audio/sfx/MG_cannon_adjust.mp3') self.cannonMoveSfx.setLoop(True) self.fallSfx = base.loadSfx('phase_4/audio/sfx/MG_sfx_vine_game_fall.mp3') self.setMinigameMusic('phase_9/audio/bgm/CHQ_FACT_bg.mid') self.setDescription('Shoot as many flying Legal Eagles as you can using your cannon. Use the arrow keys to aim your cannon and press the control key to fire.') self.setWinnerPrize(60) self.setLoserPrize(20) base.setBackgroundColor(*self.bgColor) self.world = loader.loadModel(self.worldModelPath) for nodeName in self.nodesToStash: node = self.world.find('**/' + nodeName) node.removeNode() self.world.find('**/tt_m_ara_cfg_clump7:clump7').setY(30.0) self.world.find('**/tt_m_ara_cfg_eagleNest:eagleNest_mesh').setY(30.0) self.world.setColorScale(0.75, 0.75, 0.75, 1.0) self.world.reparentTo(base.render) self.world.setZ(-5.0) for i in range(len(self.platformPositions.keys())): platform = loader.loadModel('phase_9/models/cogHQ/platform1.bam') platform.find('**/platformcollision').removeNode() platform.reparentTo(render) platform.setPos(*self.platformPositions[i]) self.platforms.append(platform) for triggerName in self.triggers: trigger = self.world.find('**/' + triggerName) trigger.setCollideMask(CIGlobals.WallBitmask) self.accept('enter' + triggerName, self.__handleHitWall) self.fog = Fog('DEagleGame-sceneFog') self.fog.setColor(*self.bgColor) self.fog.setExpDensity(0.01) render.setFog(self.fog) DistributedMinigame.load(self)
def __init__(self, *args, **kwargs): template.Panda.__init__(self, *args, **kwargs) print "Hurray!" self.cube = self.loader.loadModel("models/low-cube") self.cube.reparentTo(self.render) self.cube2 = self.loader.loadModel("models/low-cube") self.cube2.reparentTo(self.render) self.cube2.setPos(self.cube, 10,20,30) self.cube2.setHpr(175,3,45) self.taskMgr.add(self.update, "update") self.taskMgr.add(self.move, "move") self._dir = 1 colour = (0.5,0.8,0.8) linfog = Fog("A linear-mode Fog node") linfog.setColor(*colour) linfog.setLinearRange(0,320) linfog.setLinearFallback(45,160,320) render.attachNewNode(linfog) render.setFog(linfog)
class CTSafeZoneLoader(SafeZoneLoader): notify = directNotify.newCategory('CTSafeZoneLoader') bldgPoints = [Point3(0, 0, 0), Point3(0, 95, 0), Point3(75, 0, 0), Point3(75, 95, 0), Point3(-110, 0, 0), Point3(-185, 0, 0), Point3(-110, 95, 0), Point3(-185, 95, 0), Point3(-296.5, 0, 0), Point3(-296.5, 95, 0), Point3(-372, 95, 0), Point3(-372, 0, 0), Point3(189, 0, 0), Point3(189, 95, 0), Point3(264, 95, 0), Point3(264, 0, 0), Point3(264, 221.5, 0), Point3(264, 318, 0), Point3(188, 318, 0), Point3(188, 221.5, 0), Point3(75, 221.5, 0), Point3(75, 318, 0), Point3(0, 221.5, 0), Point3(0, 318, 0), Point3(-110, 318, 0), Point3(-110, 221.5, 0), Point3(-185, 318, 0), Point3(-185, 221.5, 0), Point3(-296.5, 318, 0), Point3(-296.5, 221.5, 0), Point3(-372, 318, 0), Point3(-372, 221.5, 0)] bldgSectionData = [[Point3(0, 0, 0), Vec3(0, 0, 0)], [Point3(-38.59, -43.57, 0), Vec3(180, 0, 0)]] tLightData = [[(0.71, -2.06, 0.0), (0, 0, 0)], [(0.71, -226.17, -0.59), (0, 0, 0)], [(0.71, -451.44, 0.0), (0, 0, 0)], [(0.71, 221.32, 0), (0, 0, 0)], [(-39.05, 404.94, 0), (180, 0, 0)], [(-221.31, 404.94, 0.0), (180, 0, 0)], [(147.93, 404.94, 0), (180, 0, 0)], [(187.76, 221.68, 0), (0, 0, 0)], [(187.76, -1.82, 0), (0, 0, 0)], [(187.76, -227.4, -0.59), (0, 0, 0)], [(187.76, -451.28, 0), (0, 0, 0)], [(-185.21, -451.28, 0), (0, 0, 0)], [(-185.21, -226.94, 0), (0, 0, 0)], [(-185.21, -1.95, 0), (0, 0, 0)], [(-185.21, 221.7, 0), (0, 0, 0)]] def __init__(self, hood, parentFSMState, doneEvent): SafeZoneLoader.__init__(self, hood, parentFSMState, doneEvent) self.playground = CTPlayground.CTPlayground self.pgMusicFilename = 'phase_12/audio/bgm/Bossbot_Entry_v1.mid' self.interiorMusicFilename = None self.battleMusicFile = None self.invasionMusicFiles = None self.tournamentMusicFiles = None self.bossBattleMusicFile = None self.dnaFile = None self.szStorageDNAFile = None self.buildingSectionNodes = [] self.trafficLightNodes = [] self.trafficLights = [] self.fog = None self.rain = None self.rainRender = None self.soundRain = None self.thunderSounds = [base.loadSfx('phase_14/audio/sfx/big_thunder_1.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_2.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_3.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_4.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_5.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_6.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_7.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_8.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_9.mp3'), base.loadSfx('phase_14/audio/sfx/big_thunder_10.mp3')] return def load(self): SafeZoneLoader.load(self) self.soundRain = base.loadSfx('phase_14/audio/sfx/rain_ambient.mp3') self.rain = ParticleLoader.loadParticleEffect('phase_14/etc/rain.ptf') self.rain.setPos(0, 0, 5) self.rainRender = self.geom.attachNewNode('snowRender') self.rainRender.setDepthWrite(0) self.rainRender.setBin('fixed', 1) def unload(self): self.soundRain = None self.rain = None del self.rainRender SafeZoneLoader.unload(self) return def createSafeZone(self, foo): self.geom = loader.loadModel('phase_14/models/neighborhoods/cogtropolis.egg') self.geom.reparentTo(hidden) for i in range(2): bldgSectionNode = render.attachNewNode('bldgSection' + str(i)) bldgSectionNode.setPos(self.bldgSectionData[i][0]) bldgSectionNode.setHpr(self.bldgSectionData[i][1]) for point in self.bldgPoints: bldg = loader.loadModel('phase_14/models/props/cogtropolis_big_building_1.egg') bldg.reparentTo(bldgSectionNode) bldg.setPos(point) self.buildingSectionNodes.append(bldgSectionNode) for data in self.tLightData: node = render.attachNewNode('tlight-intersection-holder') node.setPos(data[0]) node.setHpr(data[1]) light = TrafficLight.TrafficLight() light.reparentTo(node) light.startFlashing() light2 = TrafficLight.TrafficLight(1) light2.reparentTo(node) light2.startFlashing() self.trafficLightNodes.append(node) self.trafficLights.append(light) self.trafficLights.append(light2) self.fog = Fog('CogTropolis-fog') self.fog.setColor(0.3, 0.3, 0.3) self.fog.setExpDensity(0.0075) self.geom.flattenMedium() gsg = base.win.getGsg() if gsg: self.geom.prepareScene(gsg) def unload(self): for trafficLight in self.trafficLights: trafficLight.destroy() del self.trafficLights for trafficLightN in self.trafficLightNodes: trafficLightN.removeNode() for section in self.buildingSectionNodes: section.removeNode() del self.trafficLightNodes del self.buildingSectionNodes del self.fog SafeZoneLoader.unload(self)
def gameLoop(self, task): #Compensate for inconsistent update intervals dt = globalClock.getDt() if self.GAME_MODE == MAIN_MENU: if not self.mode_initialized: self.buildMainMenu() self.mode_initialized = True if self.GAME_MODE == IN_GAME_MENU: if not self.mode_initialized: #Fog out background inGameMenuFogColor = (50, 150, 50) inGameMenuFog = Fog("inGameMenuFog") inGameMenuFog.setMode(Fog.MExponential) inGameMenuFog.setColor(*inGameMenuFogColor) inGameMenuFog.setExpDensity(.01) render.setFog(inGameMenuFog) self.buildInGameMenu() self.mode_initialized = True if self.GAME_MODE == PLAY: if not self.mode_initialized: props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.last_mouse_x = self.win.getPointer(0).getX() self.last_mouse_y = self.win.getPointer(0).getY() self.mode_initialized = True if self.play_mode == TERRAIN: self.maintainTurrets() self.avatar.move(dt) elif self.play_mode == SPACE: self.asteroidManager.maintainAsteroidField(self.avatar.objectNP.getPos(), self.avatar.speed, dt) #Handle keyboard input self.avatar.handleKeys(self.keys, self.play_mode) ########## Mouse-based viewpoint rotation ########## mouse_pos = self.win.getPointer(0) current_mouse_x = mouse_pos.getX() current_mouse_y = mouse_pos.getY() #Side to side if self.play_mode == TERRAIN: mouse_shift_x = current_mouse_x - self.last_mouse_x self.last_mouse_x = current_mouse_x if current_mouse_x < 5 or current_mouse_x >= (self.win_center_x * 1.5): base.win.movePointer(0, self.win_center_x, current_mouse_y) self.last_mouse_x = self.win_center_x yaw_shift = -((mouse_shift_x) * Camera.ROT_RATE[0]) self.avatar.yawRot += yaw_shift self.avatar.objectNP.setH(self.avatar.yawRot) #Up and down mouse_shift_y = current_mouse_y - self.last_mouse_y self.last_mouse_y = current_mouse_y if current_mouse_y < 5 or current_mouse_y >= (self.win_center_y * 1.5): base.win.movePointer(0, current_mouse_x, self.win_center_y) self.last_mouse_y = self.win_center_y pitch_shift = -((mouse_shift_y) * Camera.ROT_RATE[1]) self.mainCamera.pitchRot += pitch_shift if self.mainCamera.pitchRot > Camera.FLEX_ROT_MAG[0]: self.mainCamera.pitchRot = Camera.FLEX_ROT_MAG[0] elif self.mainCamera.pitchRot < -Camera.FLEX_ROT_MAG[0]: self.mainCamera.pitchRot = -Camera.FLEX_ROT_MAG[0] xy_plane_cam_dist = Camera.AVATAR_DIST cam_x_adjust = xy_plane_cam_dist*sin(radians(self.avatar.yawRot)) cam_y_adjust = xy_plane_cam_dist*cos(radians(self.avatar.yawRot)) cam_z_adjust = Camera.ELEVATION self.mainCamera.camObject.setH(self.avatar.yawRot) self.mainCamera.camObject.setP(self.mainCamera.pitchRot) self.mainCamera.camObject.setPos(self.avatar.objectNP.getX() + cam_x_adjust, self.avatar.objectNP.getY() - cam_y_adjust, self.avatar.objectNP.getZ() + cam_z_adjust) #Find collisions #self.cTrav.traverse(render) #print self.environ.getBounds() return Task.cont
class Estate(Place.Place): notify = DirectNotifyGlobal.directNotify.newCategory('Estate') def __init__(self, loader, avId, zoneId, parentFSMState, doneEvent): Place.Place.__init__(self, None, doneEvent) self.id = MyEstate self.avId = avId self.zoneId = zoneId self.loader = loader self.cameraSubmerged = -1 self.toonSubmerged = -1 self.fsm = ClassicFSM.ClassicFSM('Estate', [State.State('init', self.enterInit, self.exitInit, ['final', 'teleportIn', 'doorIn', 'walk']), State.State('petTutorial', self.enterPetTutorial, self.exitPetTutorial, ['walk']), State.State('walk', self.enterWalk, self.exitWalk, ['final', 'sit', 'stickerBook', 'options', 'quest', 'fishing', 'mailbox', 'stopped', 'DFA', 'trialerFA', 'doorOut', 'push', 'pet', 'purchase']), State.State('stopped', self.enterStopped, self.exitStopped, ['walk', 'teleportOut']), State.State('sit', self.enterSit, self.exitSit, ['walk']), State.State('push', self.enterPush, self.exitPush, ['walk']), State.State('stickerBook', self.enterStickerBook, self.exitStickerBook, ['walk', 'sit', 'quest', 'fishing', 'mailbox', 'stopped', 'doorOut', 'push', 'pet', 'DFA', 'trialerFA']), State.State('teleportIn', self.enterTeleportIn, self.exitTeleportIn, ['walk', 'petTutorial']), State.State('teleportOut', self.enterTeleportOut, self.exitTeleportOut, ['teleportIn', 'walk', 'final']), State.State('doorIn', self.enterDoorIn, self.exitDoorIn, ['walk']), State.State('doorOut', self.enterDoorOut, self.exitDoorOut, ['final', 'walk']), State.State('final', self.enterFinal, self.exitFinal, ['teleportIn']), State.State('quest', self.enterQuest, self.exitQuest, ['walk']), State.State('fishing', self.enterFishing, self.exitFishing, ['walk', 'stopped']), State.State('mailbox', self.enterMailbox, self.exitMailbox, ['walk', 'stopped']), State.State('stopped', self.enterStopped, self.exitStopped, ['walk']), State.State('pet', self.enterPet, self.exitPet, ['walk', 'trialerFA']), State.State('trialerFA', self.enterTrialerFA, self.exitTrialerFA, ['trialerFAReject', 'DFA']), State.State('trialerFAReject', self.enterTrialerFAReject, self.exitTrialerFAReject, ['walk']), State.State('DFA', self.enterDFA, self.exitDFA, ['DFAReject', 'teleportOut']), State.State('purchase', self.enterPurchase, self.exitPurchase, ['walk']), State.State('DFAReject', self.enterDFAReject, self.exitDFAReject, ['walk'])], 'init', 'final') self.fsm.enterInitialState() self.doneEvent = doneEvent self.parentFSMState = parentFSMState return def delete(self): self.unload() def load(self): Place.Place.load(self) self.fog = Fog('EstateFog') taskMgr.add(self.__checkCameraUnderwater, 'estate-check-cam-underwater') path = self.loader.geom.find('**/Path') path.setBin('ground', 10, 1) self.parentFSMState.addChild(self.fsm) def unload(self): self.ignoreAll() self.notify.info('remove estate-check-toon-underwater to TaskMgr in unload()') taskMgr.remove('estate-check-toon-underwater') taskMgr.remove('estate-check-cam-underwater') self.parentFSMState.removeChild(self.fsm) del self.fsm self.fog = None Place.Place.unload(self) return def enter(self, requestStatus): hoodId = requestStatus['hoodId'] zoneId = requestStatus['zoneId'] newsManager = base.cr.newsManager if config.GetBool('want-estate-telemetry-limiter', 1): limiter = TLGatherAllAvs('Estate', RotationLimitToH) else: limiter = TLNull() self._telemLimiter = limiter if newsManager: holidayIds = base.cr.newsManager.getDecorationHolidayId() if (ToontownGlobals.HALLOWEEN_COSTUMES in holidayIds or ToontownGlobals.SPOOKY_COSTUMES in holidayIds) and self.loader.hood.spookySkyFile: lightsOff = Sequence(LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(0.55, 0.55, 0.65, 1)), Func(self.loader.hood.startSpookySky)) lightsOff.start() else: self.loader.hood.startSky() lightsOn = LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1)) lightsOn.start() else: self.loader.hood.startSky() lightsOn = LerpColorScaleInterval(base.cr.playGame.hood.loader.geom, 0.1, Vec4(1, 1, 1, 1)) lightsOn.start() self.loader.hood.sky.setFogOff() self.__setFaintFog() for i in self.loader.nodeList: self.loader.enterAnimatedProps(i) self.loader.geom.reparentTo(render) # The client April Toons Manager is currently broken, so we have to do this hacky thing instead. :( #if hasattr(base.cr, 'aprilToonsMgr'): #if self.isEventActive(AprilToonsGlobals.EventEstateGravity): #base.localAvatar.startAprilToonsControls() if base.config.GetBool('want-april-toons'): base.localAvatar.startAprilToonsControls() self.accept('doorDoneEvent', self.handleDoorDoneEvent) self.accept('DistributedDoor_doorTrigger', self.handleDoorTrigger) self.fsm.request(requestStatus['how'], [requestStatus]) def exit(self): base.localAvatar.stopChat() if base.config.GetBool('want-april-toons'): base.localAvatar.stopAprilToonsControls() self._telemLimiter.destroy() del self._telemLimiter if hasattr(self, 'fsm'): self.fsm.requestFinalState() self.loader.geom.reparentTo(hidden) for i in self.loader.nodeList: self.loader.exitAnimatedProps(i) self.loader.hood.stopSky() render.setFogOff() base.cr.cache.flush() def __setZoneId(self, zoneId): self.zoneId = zoneId def detectedMailboxCollision(self): self.fsm.request('mailbox') def detectedGardenPlotUse(self): if hasattr(self, 'fsm'): self.fsm.request('stopped') def detectedGardenPlotDone(self): if hasattr(self, 'fsm'): self.fsm.request('walk') def detectedFlowerSellUse(self): if hasattr(self, 'fsm'): self.fsm.request('stopped') def detectedFlowerSellDone(self): if hasattr(self, 'fsm'): self.fsm.request('walk') def doRequestLeave(self, requestStatus): self.fsm.request('trialerFA', [requestStatus]) def enterInit(self): pass def exitInit(self): pass def enterPurchase(self): Place.Place.enterPurchase(self) def exitPurchase(self): Place.Place.exitPurchase(self) def enterPetTutorial(self, bDummy = True): self.notify.info('remove estate-check-toon-underwater to TaskMgr in enterPetTutorial()') taskMgr.remove('estate-check-toon-underwater') self.petTutorialDoneEvent = 'PetTutorialDone' self.acceptOnce(self.petTutorialDoneEvent, self.petTutorialDone) self.petTutorial = PetTutorial.PetTutorial(self.petTutorialDoneEvent) def exitPetTutorial(self): self.notify.info('add estate-check-toon-underwater to TaskMgr in exitPetTutorial()') if hasattr(self, 'fsm'): taskMgr.add(self.__checkToonUnderwater, 'estate-check-toon-underwater') if hasattr(self, 'petTutorial') and self.petTutorial is not None: self.petTutorial.destroy() return def petTutorialDone(self): self.ignore(self.petTutorialDoneEvent) self.petTutorial.destroy() self.petTutorial = None self.fsm.request('walk', [1]) return def enterMailbox(self): Place.Place.enterPurchase(self) base.localAvatar.startSleepWatch(self.__handleFallingAsleepMailbox) self.enablePeriodTimer() def __handleFallingAsleepMailbox(self, arg): if hasattr(self, 'fsm'): self.fsm.request('walk') messenger.send('mailboxAsleep') base.localAvatar.forceGotoSleep() def exitMailbox(self): Place.Place.exitPurchase(self) base.localAvatar.stopSleepWatch() self.disablePeriodTimer() def enterTeleportIn(self, requestStatus): self._etiToken = self.addSetZoneCompleteCallback(Functor(self._teleportToHouse, requestStatus)) Place.Place.enterTeleportIn(self, requestStatus) def _teleportToHouse(self, requestStatus): try: houseDo = base.cr.doId2do.get(base.localAvatar.houseId) house = houseDo.house pos = house.getPos(render) base.localAvatar.detachNode() base.localAvatar.setPosHpr(house, 17, 3, 0, 125, 0, 0) except: x, y, z, h, p, r = HouseGlobals.defaultEntryPoint base.localAvatar.detachNode() base.localAvatar.setPosHpr(render, x, y, z, h, p, r) base.localAvatar.setScale(1, 1, 1) self.toonSubmerged = -1 self.notify.info('remove estate-check-toon-underwater to TaskMgr in enterTeleportIn()') taskMgr.remove('estate-check-toon-underwater') if base.wantPets: if base.localAvatar.hasPet() and not base.localAvatar.bPetTutorialDone: self.nextState = 'petTutorial' def teleportInDone(self): self.notify.debug('teleportInDone') self.toonSubmerged = -1 if self.nextState is not 'petTutorial': self.notify.info('add estate-check-toon-underwater to TaskMgr in teleportInDone()') if hasattr(self, 'fsm'): taskMgr.add(self.__checkToonUnderwater, 'estate-check-toon-underwater') Place.Place.teleportInDone(self) def exitTeleportIn(self): self.removeSetZoneCompleteCallback(self._etiToken) Place.Place.exitTeleportIn(self) def enterTeleportOut(self, requestStatus): Place.Place.enterTeleportOut(self, requestStatus, self.__teleportOutDone) def __teleportOutDone(self, requestStatus): if hasattr(self, 'fsm'): self.fsm.requestFinalState() hoodId = requestStatus['hoodId'] zoneId = requestStatus['zoneId'] avId = requestStatus['avId'] shardId = requestStatus['shardId'] if hoodId == ToontownGlobals.MyEstate and zoneId == self.getZoneId() and shardId == None: self.fsm.request('teleportIn', [requestStatus]) elif hoodId == ToontownGlobals.MyEstate and shardId == None: self.doneStatus = requestStatus self.getEstateZoneAndGoHome(requestStatus) else: self.doneStatus = requestStatus messenger.send(self.doneEvent, [self.doneStatus]) return def goHomeFailed(self, task): self.notifyUserGoHomeFailed() self.ignore('setLocalEstateZone') self.doneStatus['avId'] = -1 self.doneStatus['zoneId'] = self.getZoneId() self.fsm.request('teleportIn', [self.doneStatus]) return Task.done def exitTeleportOut(self): Place.Place.exitTeleportOut(self) def exitDoorIn(self): self.toonSubmerged = -1 self.notify.info('add estate-check-toon-underwater to TaskMgr in exitDoorIn()') if hasattr(self, 'fsm'): taskMgr.add(self.__checkToonUnderwater, 'estate-check-toon-underwater') Place.Place.exitDoorIn(self) def getZoneId(self): if self.zoneId: return self.zoneId else: self.notify.warning('no zone id available') def __checkCameraUnderwater(self, task): if base.camera.getZ(render) < -1.2: self.__submergeCamera() else: self.__emergeCamera() return Task.cont def __checkToonUnderwater(self, task): if base.localAvatar.getZ() < -4.0: self.__submergeToon() else: self.__emergeToon() return Task.cont def __submergeCamera(self): if self.cameraSubmerged == 1: return self.__setUnderwaterFog() base.playSfx(self.loader.underwaterSound, looping=1, volume=0.8) self.cameraSubmerged = 1 self.walkStateData.setSwimSoundAudible(1) def __emergeCamera(self): if self.cameraSubmerged == 0: return self.loader.underwaterSound.stop() self.loader.hood.sky.setFogOff() self.__setFaintFog() self.cameraSubmerged = 0 self.walkStateData.setSwimSoundAudible(0) def forceUnderWater(self): self.toonSubmerged = 0 self.__submergeToon() def __submergeToon(self): if self.toonSubmerged == 1: return self.notify.debug('continuing in __submergeToon') if hasattr(self, 'loader') and self.loader: base.playSfx(self.loader.submergeSound) if base.config.GetBool('disable-flying-glitch') == 0: self.fsm.request('walk') self.walkStateData.fsm.request('swimming', [self.loader.swimSound]) pos = base.localAvatar.getPos(render) base.localAvatar.d_playSplashEffect(pos[0], pos[1], -2.3) self.toonSubmerged = 1 def __emergeToon(self): if self.toonSubmerged == 0: return self.notify.debug('continuing in __emergeToon') if hasattr(self, 'walkStateData'): self.walkStateData.fsm.request('walking') self.toonSubmerged = 0 # The client April Toons Manager is currently broken, so we have to do this hacky thing instead. :( #if hasattr(base.cr, 'aprilToonsMgr'): #if self.isEventActive(AprilToonsGlobals.EventEstateGravity): #base.localAvatar.startAprilToonsControls() if base.config.GetBool('want-april-toons'): base.localAvatar.startAprilToonsControls() def __setUnderwaterFog(self): if base.wantFog: self.fog.setColor(Vec4(0.0, 0.0, 0.6, 1.0)) self.fog.setLinearRange(0.1, 100.0) render.setFog(self.fog) self.loader.hood.sky.setFog(self.fog) def __setWhiteFog(self): if base.wantFog: self.fog.setColor(Vec4(0.8, 0.8, 0.8, 1.0)) self.fog.setLinearRange(0.0, 400.0) render.setFog(self.fog) self.loader.hood.sky.setFog(self.fog) def __setFaintFog(self): if base.wantFog: self.fog.setColor(Vec4(0.8, 0.8, 0.8, 1.0)) self.fog.setLinearRange(0.0, 700.0) render.setFog(self.fog)
class CharSelection: notify = directNotify.newCategory('CharSelection') STAGE_TOON_POS = (66.4, 74.47, -25) STAGE_TOON_HPR = (227.73, 0, 0) NO_TOON = 'Empty Slot' PLAY = 'Play' CREATE = 'Create' TITLE = 'Pick A Toon To Play' def __init__(self, avChooser): self.avChooser = avChooser self.choice = None self.charList = None self.charNameLabel = None self.charButtons = [] self.playOrCreateButton = None self.deleteButton = None self.quitButton = None self.world = None self.sky = None self.fog = None self.title = None self.stageToon = None self.selectionFSM = ClassicFSM.ClassicFSM('CharSelection', [State.State('off', self.enterOff, self.exitOff), State.State('character', self.enterCharSelected, self.exitCharSelected), State.State('empty', self.enterEmptySelected, self.exitEmptySelected)], 'off', 'off') self.selectionFSM.enterInitialState() return def __setupStageToon(self): self.stageToon = Toon(base.cr) self.stageToon.setPos(self.STAGE_TOON_POS) self.stageToon.setHpr(self.STAGE_TOON_HPR) def cleanupStageToon(self): if self.stageToon != None: self.stageToon.disable() self.stageToon.delete() self.stageToon = None return def enterOff(self): pass def exitOff(self): pass def enterCharSelected(self, slot): self.choice = self.avChooser.getAvChoiceBySlot(slot) dna = self.choice.dna name = self.choice.name self.stageToon.setName(name) self.stageToon.setDNAStrand(dna) self.stageToon.nameTag.setColorLocal() self.stageToon.animFSM.request('neutral') self.stageToon.reparentTo(base.render) self.charNameLabel.setText(name) self.playOrCreateButton['text'] = self.PLAY self.playOrCreateButton['extraArgs'] = ['play'] self.playOrCreateButton.show() self.deleteButton.show() def exitCharSelected(self): self.stageToon.animFSM.requestFinalState() self.stageToon.deleteCurrentToon() self.stageToon.reparentTo(base.hidden) self.playOrCreateButton.hide() self.deleteButton.hide() self.choice = None return def enterEmptySelected(self): self.charNameLabel.setText(self.NO_TOON) self.playOrCreateButton['text'] = self.CREATE self.playOrCreateButton['extraArgs'] = ['create'] self.playOrCreateButton.show() def exitEmptySelected(self): self.playOrCreateButton.hide() def __action(self, action): for btn in self.charButtons: if btn['state'] == DGG.DISABLED: self.slot = btn.getPythonTag('slot') break func = None arg = None if action == 'delete': func = self.deleteToon arg = self.choice.avId elif action == 'play': func = self.playGame arg = self.choice.slot elif action == 'create': func = self.enterMAT elif action == 'quit': func = sys.exit base.transitions.fadeOut(0.3) if arg != None: Sequence(Wait(0.31), Func(func, arg)).start() else: Sequence(Wait(0.31), Func(func)).start() return def playGame(self, slot): messenger.send('avChooseDone', [self.avChooser.getAvChoiceBySlot(slot)]) def enterMAT(self): messenger.send('enterMakeAToon', [self.slot]) def deleteToon(self, avId): self.avChooser.avChooseFSM.request('waitForToonDelResponse', [avId]) def __handleCharButton(self, slot): for btn in self.charButtons: if btn.getPythonTag('slot') == slot: btn['state'] = DGG.DISABLED else: btn['state'] = DGG.NORMAL if self.avChooser.hasToonInSlot(slot): self.selectionFSM.request('character', [slot]) else: self.selectionFSM.request('empty') def load(self): base.cr.renderFrame() base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4.0 / 3.0)) self.__setupStageToon() self.world = loader.loadModel('phase_9/models/cogHQ/SellbotHQExterior.bam') self.world.reparentTo(base.render) self.world.setPos(0, 227.09, -25.36) self.sky = loader.loadModel('phase_9/models/cogHQ/cog_sky.bam') self.sky.setScale(1) self.sky.reparentTo(base.render) self.sky.find('**/InnerGroup').removeNode() self.fog = Fog('charSelectFog') self.fog.setColor(0.2, 0.2, 0.2) self.fog.setExpDensity(0.003) base.render.setFog(self.fog) self.title = DirectLabel(text=self.TITLE, text_font=CIGlobals.getMickeyFont(), text_fg=(1, 0.9, 0.1, 1), relief=None, text_scale=0.13, pos=(0, 0, 0.82)) self.charNameLabel = OnscreenText(text='', font=CIGlobals.getMickeyFont(), pos=(-0.25, 0.5, 0), fg=(1, 0.9, 0.1, 1.0)) self.charNameLabel.hide() self.playOrCreateButton = DirectButton(text='', pos=(0.8125, 0, -0.735), command=self.__action, geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01)) self.playOrCreateButton.hide() self.deleteButton = DirectButton(text='Delete', pos=(0.8125, 0, -0.835), command=self.__action, extraArgs=['delete'], geom=CIGlobals.getDefaultBtnGeom(), text_scale=0.06, relief=None, text_pos=(0, -0.01)) self.deleteButton.hide() self.quitButton = DirectButton(text='Quit', pos=(-1.1, 0, -0.925), command=self.__action, extraArgs=['quit'], text_scale=0.06, geom=CIGlobals.getDefaultBtnGeom(), relief=None, text_pos=(0, -0.01)) textRolloverColor = Vec4(1, 1, 0, 1) textDownColor = Vec4(0.5, 0.9, 1, 1) textDisabledColor = Vec4(0.4, 0.8, 0.4, 1) for slot in range(6): if self.avChooser.hasToonInSlot(slot): choice = self.avChooser.getAvChoiceBySlot(slot) text = choice.name else: text = self.NO_TOON btn = DirectButton(relief=None, text=text, text_scale=0.06, text_align=TextNode.ALeft, text1_bg=textDownColor, text2_bg=textRolloverColor, text3_fg=textDisabledColor, textMayChange=0, command=self.__handleCharButton, extraArgs=[slot], text_pos=(0, 0, 0.0)) btn.setPythonTag('slot', slot) self.charButtons.append(btn) btn['state'] = DGG.NORMAL gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam') listXorigin = -0.02 listFrameSizeX = 0.625 listZorigin = -0.96 listFrameSizeZ = 1.04 arrowButtonScale = 1.3 itemFrameXorigin = -0.237 itemFrameZorigin = 0.365 buttonXstart = itemFrameXorigin + 0.293 self.charList = DirectScrolledList(relief=None, pos=(0.75, 0, 0.08), incButton_image=(gui.find('**/FndsLst_ScrollUp'), gui.find('**/FndsLst_ScrollDN'), gui.find('**/FndsLst_ScrollUp_Rllvr'), gui.find('**/FndsLst_ScrollUp')), incButton_relief=None, incButton_scale=(arrowButtonScale, arrowButtonScale, -arrowButtonScale), incButton_pos=(buttonXstart, 0, itemFrameZorigin - 0.999), incButton_image3_color=Vec4(1, 1, 1, 0.2), decButton_image=(gui.find('**/FndsLst_ScrollUp'), gui.find('**/FndsLst_ScrollDN'), gui.find('**/FndsLst_ScrollUp_Rllvr'), gui.find('**/FndsLst_ScrollUp')), decButton_relief=None, decButton_scale=(arrowButtonScale, arrowButtonScale, arrowButtonScale), decButton_pos=(buttonXstart, 0, itemFrameZorigin + 0.125), decButton_image3_color=Vec4(1, 1, 1, 0.2), itemFrame_pos=(itemFrameXorigin, 0, itemFrameZorigin), itemFrame_scale=1.0, itemFrame_relief=DGG.SUNKEN, itemFrame_frameSize=(listXorigin, listXorigin + listFrameSizeX, listZorigin, listZorigin + listFrameSizeZ), itemFrame_frameColor=(0.85, 0.95, 1, 1), itemFrame_borderWidth=(0.01, 0.01), numItemsVisible=15, forceHeight=0.075, items=self.charButtons) base.camera.setPos(75.12, 63.22, -23) base.camera.setHpr(26.57, 9.62, 0) return def unload(self): self.selectionFSM.requestFinalState() self.cleanupStageToon() self.choice = None if self.charButtons: for btn in self.charButtons: btn.destroy() self.charButtons = None if self.charList: self.charList.destroy() self.charList = None if self.charNameLabel: self.charNameLabel.destroy() self.charNameLabel = None if self.playOrCreateButton: self.playOrCreateButton.destroy() self.playOrCreateButton = None if self.deleteButton: self.deleteButton.destroy() self.deleteButton = None if self.quitButton: self.quitButton.destroy() self.quitButton = None if self.sky: self.sky.removeNode() self.sky = None if self.world: self.world.removeNode() self.world = None if self.title: self.title.destroy() self.title = None base.render.clearFog() self.fog = None base.camera.setPos(0, 0, 0) base.camera.setHpr(0, 0, 0) base.transitions.noTransitions() del self.selectionFSM return
def load(self): CogHood.load(self) self.fog = Fog("BossbotHQFog") self.sky.hide()
def load(self): ToonHood.load(self) self.fog = Fog("BRFog")
class CogdoBarrelRoom: notify = DirectNotifyGlobal.directNotify.newCategory('DistributedCogdoBarrelRoom') def __init__(self): self.timer = None self.model = None self._isLoaded = False self.dummyElevInNode = None self.cogdoBarrelsNode = None self.entranceNode = None self.nearBattleNode = None self.rewardUi = None self.rewardUiTaskName = 'CogdoBarrelRoom-RewardUI' self.rewardCameraTaskName = 'CogdoBarrelRoom-RewardCamera' self.fog = None self.defaultFar = None self.stomperSfx = None return def destroy(self): self.unload() def load(self): if self._isLoaded: return self.timer = ToontownTimer.ToontownTimer() self.timer.stash() self.model = loader.loadModel(CogdoBarrelRoomConsts.BarrelRoomModel) self.model.setPos(*CogdoBarrelRoomConsts.BarrelRoomModelPos) self.model.reparentTo(render) self.model.stash() self.dummyElevInNode = self.model.attachNewNode('elevator-in') self.dummyElevInNode.hide() self.entranceNode = self.model.attachNewNode('door-entrance') self.entranceNode.setPos(0, -65, 0) self.nearBattleNode = self.model.attachNewNode('near-battle') self.nearBattleNode.setPos(0, -25, 0) self.rewardUi = CogdoBarrelRoomRewardPanel.CogdoBarrelRoomRewardPanel() self.hideRewardUi() self.stomperSfx = base.loadSfx(CogdoBarrelRoomConsts.StomperSound) self.fog = Fog('barrel-room-fog') self.fog.setColor(CogdoBarrelRoomConsts.BarrelRoomFogColor) self.fog.setLinearRange(*CogdoBarrelRoomConsts.BarrelRoomFogLinearRange) self._isLoaded = True def unload(self): if self.model: self.model.removeNode() self.model = None if self.timer: self.timer.destroy() self.timer = None if self.rewardUi: self.rewardUi.destroy() self.rewardUi = None if self.fog: render.setFogOff() del self.fog taskMgr.remove(self.rewardUiTaskName) taskMgr.remove(self.rewardCameraTaskName) self._isLoaded = False return def isLoaded(self): return self._isLoaded def show(self): if not self.cogdoBarrelsNode: self.cogdoBarrelsNode = render.find('**/@@CogdoBarrels') self.cogdoBarrelsNode.reparentTo(self.model) self.cogdoBarrelsNode.unstash() self.defaultFar = base.camLens.getFar() base.camLens.setFar(CogdoBarrelRoomConsts.BarrelRoomCameraFar) self.showBattleAreaLight(True) render.setFog(self.fog) self.model.unstash() def hide(self): self.model.stash() render.setFogOff() if self.defaultFar is not None: base.camLens.setFar(self.defaultFar) return def activate(self): self.notify.info('Activating barrel room: %d sec timer.' % CogdoBarrelRoomConsts.CollectionTime) self.timer.unstash() self.timer.posAboveShtikerBook() self.timer.countdown(CogdoBarrelRoomConsts.CollectionTime) base.cr.playGame.getPlace().fsm.request('walk') def deactivate(self): self.notify.info('Deactivating barrel room.') self.timer.stop() self.timer.stash() def placeToonsAtEntrance(self, toons): for i in xrange(len(toons)): toons[i].setPosHpr(self.entranceNode, *CogdoBarrelRoomConsts.BarrelRoomPlayerSpawnPoints[i]) def placeToonsNearBattle(self, toons): for i in xrange(len(toons)): toons[i].setPosHpr(self.nearBattleNode, *CogdoBarrelRoomConsts.BarrelRoomPlayerSpawnPoints[i]) def showBattleAreaLight(self, visible = True): lightConeNode = self.model.find('**/battleCone') if lightConeNode != None and not lightConeNode.isEmpty(): if visible: lightConeNode.show() else: lightConeNode.hide() return def getIntroInterval(self): avatar = base.localAvatar trackName = '__introBarrelRoom-%d' % avatar.doId track = Parallel(name=trackName) track.append(self.__stomperIntervals()) track.append(Sequence(Func(base.camera.reparentTo, render), Func(base.camera.setPosHpr, self.model, -20.0, -87.9, 12.0, -30, 0, 0), Func(base.transitions.irisIn, 0.5), Wait(1.0), LerpHprInterval(base.camera, duration=2.0, startHpr=Vec3(-30, 0, 0), hpr=Vec3(0, 0, 0), blendType='easeInOut'), Wait(2.5), LerpHprInterval(base.camera, duration=3.0, startHpr=Vec3(0, 0, 0), hpr=Vec3(-45, 0, 0), blendType='easeInOut'), Wait(2.5))) track.delayDelete = DelayDelete.DelayDelete(avatar, 'introBarrelRoomTrack') track.setDoneEvent(trackName) return (track, trackName) def __stomperIntervals(self): ivals = [SoundInterval(self.stomperSfx)] i = 0 for stomperDef in CogdoBarrelRoomConsts.StomperProps: stomperNode = render.find(stomperDef['path']) if stomperNode: maxZ = random.uniform(10, 20) minZ = maxZ - 10 if stomperDef['motion'] == 'up': startZ, destZ = minZ, maxZ else: startZ, destZ = maxZ, minZ stomperNode.setPos(Point3(0, 0, startZ)) ivals.append(LerpPosInterval(stomperNode, CogdoBarrelRoomConsts.StomperHaltTime, Point3(0, 0, destZ), blendType='easeOut')) i += 1 return Parallel(*tuple(ivals)) def __rewardUiTimeout(self, callback): self.hideRewardUi() if callback is not None: callback() return def __rewardCamera(self): trackName = 'cogdoBarrelRoom-RewardCamera' track = Sequence(Func(base.camera.reparentTo, render), Func(base.camera.setPosHpr, self.model, 0, 0, 11.0, 0, -14, 0), Func(self.showBattleAreaLight, False), name=trackName) return (track, trackName) def showRewardUi(self, results, callback = None): track, trackName = self.__rewardCamera() if CogdoBarrelRoomConsts.ShowRewardUI: self.rewardUi.setRewards(results) self.rewardUi.unstash() taskMgr.doMethodLater(CogdoBarrelRoomConsts.RewardUiTime, self.__rewardUiTimeout, self.rewardUiTaskName, extraArgs=[callback]) return (track, trackName) def setRewardResults(self, results): self.rewardUi.setRewards(results) def hideRewardUi(self): self.rewardUi.stash() taskMgr.remove(self.rewardUiTaskName)