Ejemplo n.º 1
0
 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()
Ejemplo n.º 3
0
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)
Ejemplo n.º 5
0
 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()
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    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()
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
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()
Ejemplo n.º 10
0
 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()
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
Archivo: bt.py Proyecto: btdevel/bt
 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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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")
Ejemplo n.º 16
0
 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
Ejemplo n.º 17
0
    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)
Ejemplo n.º 18
0
 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)
Ejemplo n.º 19
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)
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
    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
        }
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
 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
Ejemplo n.º 24
0
	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()
Ejemplo n.º 25
0
 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)
Ejemplo n.º 26
0
    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
Ejemplo n.º 27
0
    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)
Ejemplo n.º 28
0
    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)
Ejemplo n.º 29
0
 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)
Ejemplo n.º 31
0
    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)
Ejemplo n.º 32
0
 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)
Ejemplo n.º 33
0
    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)
Ejemplo n.º 35
0
    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()
Ejemplo n.º 36
0
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)
Ejemplo n.º 40
0
	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()
Ejemplo n.º 41
0
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
Ejemplo n.º 42
0
    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()
Ejemplo n.º 43
0
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)
Ejemplo n.º 44
0
    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()
Ejemplo n.º 45
0
  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)
Ejemplo n.º 47
0
  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()
Ejemplo n.º 48
0
	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
Ejemplo n.º 50
0
    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)
Ejemplo n.º 51
0
    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)
Ejemplo n.º 52
0
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)
Ejemplo n.º 53
0
    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
Ejemplo n.º 54
0
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)
Ejemplo n.º 55
0
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
Ejemplo n.º 56
0
    def load(self):
        CogHood.load(self)

        self.fog = Fog("BossbotHQFog")

        self.sky.hide()
Ejemplo n.º 57
0
    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)