def loadEnvir(self):
		terrain = GeoMipTerrain("terreno")
		terrain.setHeightfield("terreno/preto.png")
		terrain.setColorMap("terreno/tile_far.jpg")
		terrain.getRoot().setScale(5,5,50)
		terrain.getRoot().reparentTo(render)
		terrain.generate()
 def loadEnvir(self):
     terrain = GeoMipTerrain("terreno")
     terrain.setHeightfield("terreno/preto.png")
     terrain.setColorMap("terreno/tile_far.jpg")
     terrain.getRoot().setScale(5, 5, 50)
     terrain.getRoot().reparentTo(render)
     terrain.generate()
Example #3
0
class MyApp(ShowBase):
	
	def __init__(self):
		ShowBase.__init__(self)
		
		
		#standard GeoMipTerrain usage
		self.terrain = GeoMipTerrain("worldTerrain")
		self.terrain.setHeightfield("mapheight.png")
		self.terrain.setColorMap("maptexture.png")
		#self.terrain.setBruteforce(True)
		#set dynamically updated terrain
		self.terrain.setBlockSize(32)
		self.terrain.setNearFar(128, 256) #distance in terrain coordinates
		self.terrain.setMinLevel(0) #low means high quality
		self.terrain.setFocalPoint(base.camera) #a NodePath
		#get root
		root = self.terrain.getRoot()
		root.reparentTo(render)
		root.setSz(100)
		self.terrain.generate()
		taskMgr.add(self.updateTask,  "update")
		
		self.camera.setPos(0, 0, 0)
		
		#add person
		self.player = Actor("girl4.x", {"girl03_03": "girl"})
		print("girl loaded")
		self.player.setPos(0, 5, -1)
		self.player.reparentTo(self.render)
		print("girl reparented")
	
	def updateTask(self, task):
		self.terrain.update()
		return task.cont
Example #4
0
 def play(self, ai, difficult=False):
     self.easyAI.destroy()
     self.hardAI.destroy()
     self.ai = None
     self.cTrav = CollisionTraverser()
     self.coll = CollisionHandlerEvent()
     self.coll.addInPattern("%fn-into-%in")
     self.clock = ClockObject()
     terrain = GeoMipTerrain("worldTerrain")
     terrain.setHeightfield("heightMap.png")
     terrain.setColorMap("colormap.png")
     terrain.setBruteforce(True)
     root = terrain.getRoot()
     root.reparentTo(self.render)
     root.setSz(1)
     terrain.generate()
     self.player = Character("models/panda-model", 0.05, (300, 300, 0),
                             self.render, {"walk": "models/panda-walk4"},
                             self, self.path, 200, "player")
     self.addControls()
     self.loadUI()
     self.startTasks()
     self.accept("proj-into-player", self.player.changeLife, [-1])
     self.others = dict()
     self.roundOv = False
     self.taskMgr.add(self.update, "Update")
     self.gameOver = False
     if ai:
         self.aiBattle(difficult)
    def __init__(self, data_source):
        ShowBase.__init__(self)
        if not os.path.isfile('world.bam'):
            terrain = GeoMipTerrain("worldTerrain")
            terrain.setHeightfield(os.path.join(RESOURCE_DIR, "uk_height_map_25.png"))
            terrain.setColorMap(os.path.join(RESOURCE_DIR, "uk_flopped_rotated_25.png"))
            terrain.setBruteforce(True)
            root = terrain.getRoot()
            root.reparentTo(render)
            root.setSz(10)
            terrain.generate()
            root.writeBamFile('world.bam')
        else:
            world = loader.loadModel("world.bam")
            world.reparentTo(render)

        self.toasters = {}
        self.toasters_by_zone = {}
        for vm in data_source.get_vms():
            height = len(self.toasters_by_zone.get(vm.zonename, []))
            self.toasters[vm.name] = Toaster(vm.zonename, height, vm.state == "Running")
            self.toasters_by_zone.setdefault(vm.zonename, []).append(self.toasters[vm.name])
            

        # In Panda3D you have to cancel the default mouse control to set the camera explicitly
        # Falsify the following 3 lines to allow it back again:
        if True:
            self.disableMouse()
            self.camera.setPos(350, -100, 100)
            self.camera.setHpr(0, -25, 0)
    def __init__(self, data_source):
        ShowBase.__init__(self)
        if not os.path.isfile('world.bam'):
            terrain = GeoMipTerrain("worldTerrain")
            terrain.setHeightfield(
                os.path.join(RESOURCE_DIR, "uk_height_map_25.png"))
            terrain.setColorMap(
                os.path.join(RESOURCE_DIR, "uk_flopped_rotated_25.png"))
            terrain.setBruteforce(True)
            root = terrain.getRoot()
            root.reparentTo(render)
            root.setSz(10)
            terrain.generate()
            root.writeBamFile('world.bam')
        else:
            world = loader.loadModel("world.bam")
            world.reparentTo(render)

        self.toasters = {}
        self.toasters_by_zone = {}
        for vm in data_source.get_vms():
            height = len(self.toasters_by_zone.get(vm.zonename, []))
            self.toasters[vm.name] = Toaster(vm.zonename, height,
                                             vm.state == "Running")
            self.toasters_by_zone.setdefault(vm.zonename,
                                             []).append(self.toasters[vm.name])

        # In Panda3D you have to cancel the default mouse control to set the camera explicitly
        # Falsify the following 3 lines to allow it back again:
        if True:
            self.disableMouse()
            self.camera.setPos(350, -100, 100)
            self.camera.setHpr(0, -25, 0)
Example #7
0
 def __init__(self):
     ShowBase.__init__(self)
     terrain = GeoMipTerrain("worldTerrain")
     terrain.setHeightfield("height-map.png")
     terrain.setColorMap("texture-map.png")
     terrain.setBruteforce(True)
     root = terrain.getRoot()
     root.reparentTo(render)
     root.setSz(60)
     terrain.generate()
Example #8
0
 def __init__(self):
     ShowBase.__init__(self)  # initialise
     terrain = GeoMipTerrain("worldTerrain")  # create a terrain
     terrain.setHeightfield("mapheight.png")  # set the height map
     terrain.setColorMap("maptex.png")  # set the colour map
     terrain.setBruteforce(True)  # level of detail
     root = terrain.getRoot()  # capture root
     root.reparentTo(render)  # render from root
     root.setSz(60)  # maximum height
     terrain.generate()  # generate
Example #9
0
 def __init__(self):
     ShowBase.__init__(self)  # initialise
     terrain = GeoMipTerrain("worldTerrain")  # create a terrain
     terrain.setHeightfield("gwadaHeightSmall.png")  # set the height map
     terrain.setColorMap("gwadaTextureSmall.jpg")  # set the colour map
     #terrain.setBruteforce(True)                    # level of detail
     root = terrain.getRoot()  # capture root
     root.reparentTo(render)  # render from root
     root.setSz(60)  # maximum height
     terrain.generate()  # generate
     root.writeBamFile('world.bam')  # create 3D model
Example #10
0
 def __init__(self):
     ShowBase.__init__(self)  # initialise
     terrain = GeoMipTerrain("worldTerrain")  # create a terrain
     terrain.setHeightfield(height)  # set the height map
     terrain.setColorMap(texture)  # set the colour map
     terrain.setBruteforce(True)  # level of detail
     root = terrain.getRoot()  # capture root
     root.reparentTo(render)  # render from root
     root.setSz(2)  # maximum height
     terrain.generate()  # generate
     root.writeBamFile('models/world' + worldNameSuffix +
                       ".bam")  # create 3D model
Example #11
0
    def __init__(self):
        ShowBase.__init__(self)
        terrain = GeoMipTerrain("worldTerrain")
        terrain.setHeightfield("models/issue1terrain.png")
        terrain.setColorMap("models/issue2terrain.png")
        terrain.setBruteforce(True)  # level of detail
        root = terrain.getRoot()
        root.reparentTo(render)
        root.setSz(60)  # maximum height
        terrain.generate()

        root.writeBamFile("models/world.bam")
Example #12
0
	def __init__(self):
		ShowBase.__init__(self)
		terrain = GeoMipTerrain("worldTerrain")
		terrain.setHeightfield("models/issue1terrain.png")
		terrain.setColorMap("models/issue2terrain.png")
		terrain.setBruteforce(True) # level of detail
		root = terrain.getRoot()
		root.reparentTo(render)
		root.setSz(60) # maximum height
		terrain.generate()

		root.writeBamFile("models/world.bam")
Example #13
0
    def __init__(self):
        ShowBase.__init__(self)
        self.debug = False
        self.statusLabel = self.makeStatusLabel(0)
        self.collisionLabel = self.makeStatusLabel(1)
        if os.path.isfile("assets/1stmap.bam"):
            self.world = self.loader.loadModel("assets/1stmap.bam")
            self.world.reparentTo(self.render)
        else:
            print "generating terrain and saving bam for future use"
            terrain = GeoMipTerrain("worldTerrain")
            terrain.setHeightfield("./assets/1stmap_HF.png")
            terrain.setColorMap("./assets/1stmap_TM.png")
            terrain.setBruteforce(True)
            root = terrain.getRoot()
            root.reparentTo(self.render)
            root.setSz(60)
            terrain.generate()
            root.writeBamFile("./assets/1stmap.bam")

        self.worldsize = 1024

        # Player
        self.maxspeed = 100.0
        self.startPos = Vec3(200, 200, 35)
        self.startHpr = Vec3(225, 0, 0)
        self.player = self.loader.loadModel("assets/alliedflanker.egg")
        self.player.setScale(0.2, 0.2, 0.2)
        self.player.reparentTo(self.render)
        self.resetPlayer()

        # Player destruction
        self.explosionModel = loader.loadModel("assets/explosion")
        self.explosionModel.reparentTo(self.render)
        self.explosionModel.setScale(0.0)
        self.explosionModel.setLightOff()
        # Only one explosion at a time
        self.exploding = False

        self.taskMgr.add(self.updateTask, "update")
        self.keyboardSetup()

        self.maxdistance = 600
        self.camLens.setFar(self.maxdistance)
        self.camLens.setFov(60)

        self.createEnvironment()
        self.setupCollisions()
        self.textCounter = 0
Example #14
0
class MyApp(ShowBase):  # our 'class'
    def __init__(self):
        ShowBase.__init__(self)  # initialise
        self.terrain = GeoMipTerrain("worldTerrain")  # create a terrain
        self.terrain.setHeightfield(
            "heightmapper-1567436259173.png")  # set the height map
        self.terrain.setColorMap(
            "TexturesCom_Moss0138_2_L.jpg")  # set the colour map
        self.terrain.setBruteforce(True)  # level of detail
        root = self.terrain.getRoot()  # capture root
        root.reparentTo(self.render)  # render from root
        root.setSz(80)  # maximum height
        self.terrain.generate()  # generate
        self.sphere = self.loader.loadModel("skysphere-1.egg")

        self.sphere.setScale(700)
        self.sphere.setPos(500, 500, 0)

        self.tex = self.loader.loadTexture("TexturesCom_Skies0282_L.jpg")
        self.sphere.setTexture(self.tex)

        self.sphere.reparentTo(self.render)
        self.setupLight()

    def setupLight(self):
        self.sunLight = DirectionalLight("sun")
        # sunLight.setColor(get_vbase4_from_hex('fbfcde'))
        self.sunLight.setColor(VBase4(.99, .99, .99, 1))
        self.light = self.render.attach_new_node(self.sunLight)
        self.light.setHpr(45, -45, 0)
        self.light.setPos(0, 0, 300)
        self.render.setLight(self.light)

        ambientLight = AmbientLight("ambient")
        ambientLight.setColor(VBase4(0.2, 0.2, 0.2, 1))
        self.ambientLight = self.render.attach_new_node(ambientLight)
        self.render.setLight(self.ambientLight)
        return
Example #15
0
class Application(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.terrain = GeoMipTerrain("terrain")
        #doesn't use search path
        self.terrain.setHeightfield("../textures/height.png")
        self.terrain.setColorMap("../textures/grass.png")
        self.terrain.getRoot().setSz(35)
        #self.terrain.setBlockSize(16)
        #self.terrain.setNear(35)
        #self.terrain.setFar(75)
        self.terrain.getRoot().reparentTo(render)
        self.terrain.generate()

        z = self.terrain.getElevation(256, 256) * 40
        self.cam.setPos(256, 256, z)

        self.terrain.setFocalPoint(self.cam)
        self.taskMgr.add(self.updateTerrain, "update terrain")

    def updateTerrain(self, task):
        self.terrain.update()
        return task.cont
Example #16
0
class Application(ShowBase):

    def __init__(self):

        ShowBase.__init__(self)

        self.terrain = GeoMipTerrain("terrain")
        self.terrain.setHeightfield("/e/models/height.bmp")
        self.terrain.setColorMap("/e/models/grass.jpg")
        #self.terrain.getRoot().setSz(100)
        self.terrain.getRoot().reparentTo(self.render)
        self.terrain.getRoot().setPos(0, 0, 0)
        self.terrain.hide()
        #z = self.terrain.getElevation(256, 256) * 40
        #self.cam.setPos(0, 10, 50)
        #self.cam.lookAt(5, 5, 0)

        #self.terrain.setFocalPoint(self.cam)
        self.taskMgr.add(self.updateTerrain, "updateTerrain")

    def updateTerrain(self, task):

        self.terrain.update()
        return task.cont
Example #17
0
class Application(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.world = BulletWorld()
        self.world.setGravity(Vec3(0, 0, -9.81))
        
        self.height = 85.0
        self.img = PNMImage(Filename('height1.png'))
        self.shape = BulletHeightfieldShape(self.img, self.height, ZUp)
        self.offset = self.img.getXSize() / 2.0 - 0.5
        self.terrain = GeoMipTerrain('terrain')
        self.terrain.setHeightfield(self.img)
        self.terrain.setColorMap("grass.png")
        self.terrainNP = self.terrain.getRoot()
        self.terrainNP.setSz(self.height)
        self.terrainNP.setPos(-self.offset, -self.offset, -self.height / 2.0)   
        self.terrain.getRoot().reparentTo(render)
        self.terrain.generate()

        self.node = BulletRigidBodyNode('Ground')
        self.node.addShape(self.shape)
        self.np = render.attachNewNode(self.node)
        self.np.setPos(0, 0, 0)
        self.world.attachRigidBody(self.node)

        self.info = self.world.getWorldInfo()
        self.info.setAirDensity(1.2)
        self.info.setWaterDensity(0)
        self.info.setWaterOffset(0)
        self.info.setWaterNormal(Vec3(0, 0, 0))
        
        self.cam.setPos(20, 20, 20)
        self.cam.setHpr(0, 0, 0)
        
        self.model = loader.loadModel('out6.egg')
        #self.model.setPos(0.0, 0.0, 0.0)
        self.model.flattenLight()
        min, max = self.model.getTightBounds()
        size = max
        mmax = size[0]
        if size[1] > mmax:
            mmax = size[1]
        if size[2] > mmax:
            mmax = size[2]
        self.rocketScale = 20.0/mmax / 2
        
        shape = BulletBoxShape(Vec3(size[0]*self.rocketScale, size[1]*self.rocketScale, size[2]*self.rocketScale))
        
        
        self.ghostshape = BulletBoxShape(Vec3(size[0]*self.rocketScale, size[1]*self.rocketScale, size[2]*self.rocketScale))
 
        self.ghost = BulletRigidBodyNode('Ghost')
        self.ghost.addShape(self.ghostshape)
        self.ghostNP = render.attachNewNode(self.ghost)
        self.ghostNP.setPos(19.2220401046, 17.5158313723, 35.2665607047  )
        #self.ghostNP.setCollideMask(BitMask32(0x0f))
        self.model.setScale(self.rocketScale) 
        self.world.attachRigidBody(self.ghost)
        self.model.copyTo(self.ghostNP)
        
        self.rocketnode = BulletRigidBodyNode('rocketBox')
        self.rocketnode.setMass(1.0)
        self.rocketnode.addShape(shape)

        self.rocketnp = render.attachNewNode(self.rocketnode)
        self.rocketnp.setPos(0.0, 0.0, 40.0)
        tex = loader.loadTexture('crate.jpg')
        self.model.find('**/Line001').setTexture(tex, 1)
        #self.rocketnp.setTexture(tex)

        self.model.setScale(self.rocketScale)
        self.world.attachRigidBody(self.rocketnode)
        self.model.copyTo(self.rocketnp)
        self.hh = 35.0
        
        print self.ghostNP.getPos()
        
        self.accept('w', self.eventKeyW)
        self.accept('r', self.eventKeyR)
        self.taskMgr.add(self.update, 'update')
        self.massive = self.getdata('data.txt')
        self.massiveResampled = self.resample(self.massive)
        self.posInArray = 0
        self.x = 0.0
        self.y = 0.0
        self.z = 0.0
        self.timerNow = 0.0
        self.taskMgr.add(self.timerTask, 'timerTask')
    
    def checkGhost(self):
        '''
        ghost = self.ghostNP.node()
        if ghost.getNumOverlappingNodes() > 1:
            print ghost.getNumOverlappingNodes()
            for node in ghost.getOverlappingNodes():
                print node
        '''
        result = self.world.contactTest(self.ghost)
        
        for contact in result.getContacts():
            print contact.getNode0()
            print contact.getNode1()

    
    def eventKeyW(self):
        self.hh -= 1.0
        
    def eventKeyR(self):
        self.cam.setPos(self.x, self.y - 15.0, self.z + 2.50)
        
    def resample(self, array):
        len1 = len(array[0]) - 1
        res = []
        counter = 0
        resamplerArray = []
        bufArray = []
        for i in xrange(len1):
            resamplerArray.append(resampler(0.02, 0.125))
            bufArray.append([])
        
        for i in xrange(len(array)):
            buf = []

            for j in xrange(len1):
                bufArray[j] = resamplerArray[j].feed(array[i][j+1])

            for j in xrange(len(bufArray[0])):
                buf.append(0.02*(counter))
                for k in xrange(len1):
                    buf.append(bufArray[k][j])
                res.append(buf)
                counter += 1
                buf = []
        return res
        
    
    def getdata(self, name):
        array = []
        with open(name) as f:
            for line in f:
                numbers_float = map(float, line.split())
                array.append([numbers_float[0], numbers_float[1], numbers_float[2], numbers_float[3]])
        return array
        
    def update(self, task):
        dt = globalClock.getDt()
        #self.world.doPhysics(dt)
        self.getMyPos(self.massiveResampled)
        self.rocketnp.setPos(self.x, self.y, self.z)
        self.cam.setPos(self.x, self.y - 15.0, self.z + 2.50)
        return task.cont
        
    def getMyPos(self, array):
        flag = False
        len1 = len(array)
        if self.posInArray >= len1:
            flag = True
        while not flag:
            if self.timerNow < array[self.posInArray][0]:
                flag = True
                self.x = array[self.posInArray][1]
                self.y = array[self.posInArray][2]
                self.z = array[self.posInArray][3]
                break
            else:
                if self.posInArray >= len1:
                    flag = True
                    break
                else:
                    self.posInArray += 1
        self.checkGhost() 
        result = self.world.contactTest(self.rocketnode)
        
        for contact in result.getContacts():
            print contact.getNode0()
            print contact.getNode1()
            
    def timerTask(self, task):
        self.timerNow = task.time
        
        return Task.cont
Example #18
0
class WorldGen(ShowBase):  # our 'class'
    def __init__(self):

        if __name__ == '__main__':

            ShowBase.__init__(self)  # initialise

            self.initTerrain()
            self.initModels()
            self.initPositions()
            self.loadingStringParser(parameters["loadingString"])

            # self.plotPosition()
            if self.evenLoad:
                self.evenInstance(self.evenObj,
                                  scale=self.evenScale,
                                  tex=self.evenTex,
                                  z=self.evenZ)
            if self.oddLoad:
                self.oddInstance(self.oddObj,
                                 scale=self.oddScale,
                                 tex=self.oddTex,
                                 z=self.oddZ)

            # print " \n \n \n Generate is about to exit \n \n \n"

            self.generate()

            # print "kill is ", parameters["killWorldGen"]
            # parameters["killWorldGen"]=False
            if parameters["killWorldGen"]:
                import sys
                print " \n \n \n World Generate is about to exit \n \n \n"
                sys.exit()

    def initTerrain(self):
        self.terrain = GeoMipTerrain("worldTerrain")  # create a self.terrain
        self.terrain.setHeightfield(
            parameters["modelHeightMap"])  # set the height map
        if parameters[
                "loadNullModels"]:  #if null, then create uniform back and sky
            self.terrain.setColorMap(
                parameters["modelTextureMapNull"])  # set the colour map
        else:
            self.terrain.setColorMap(
                parameters["modelTextureMap"])  # set the colour map
        self.terrain.setBruteforce(True)  # level of detail
        self.root = self.terrain.getRoot()  # capture root
        self.root.reparentTo(self.render)  # render from root
        self.root.setSz(0.2)  # maximum height
        self.terrain.generate()  # generate

    def initModels(self):
        self.tree = self.loader.loadModel(parameters["treePath"])
        self.greenSphere = self.loader.loadModel(parameters["spherePath"])
        self.redSphere = self.loader.loadModel(parameters["spherePath"])

        self.treeTex = self.loader.loadTexture(parameters["treeTexPath"])
        self.greenTex = self.loader.loadTexture(parameters["greenTexPath"])
        self.redTex = self.loader.loadTexture(parameters["redTexPath"])

    def initPositions(self):
        self.evenObj = self.oddObj = self.evenScale = self.oddScale = \
                self.evenTex = self.oddTex = self.evenLoad = self.oddLoad =self.evenZ=self.oddZ= \
                self.evenPlotColor=self.oddPlotColor=self.evenPlotMarker=self.oddPlotMarker=None

        if parameters["hcp"]:

            self.odd, self.even = self.hcpListGenerator(
                heightObjects=parameters["heightObjects"],
                widthObjects=parameters["widthObjects"],
                lattice=parameters["lattice"])

        elif parameters["quad"]:

            self.odd, self.even = self.quadPositionGenerator()

        # print "odd is",self.odd
        # print "even is ", self.even

    def hcpListGenerator(self, heightObjects, widthObjects, lattice):
        self.posList = np.zeros([heightObjects * widthObjects, 2])
        self.alternate = False
        index = 0

        for i in range(0, heightObjects):
            y = i * lattice * (3**0.5) / 2
            self.alternate = not self.alternate

            for j in range(0, widthObjects):
                if self.alternate:
                    x = j * lattice + (lattice / 2)
                else:
                    x = j * lattice

                self.posList[index, :] = [x, y]
                index += 1

        # self.posList[:,0]=np.linspace(0,100,num=(self.posList.shape)[0])
        # self.posList[:,1]=np.linspace(0,100,num=(self.posList.shape)[0])

        self.oddPosList = self.posList[1::2]
        self.evenPosList = self.posList[0::2]

        # print "odd is ",self.oddPosList
        # print "even is", self.evenPosList

        return self.oddPosList, self.evenPosList

    def quadPositionGenerator(self):
        offset = ((int(parameters["worldSize"]) - 1) / 2) + 1

        quad3PosL = parameters["posL"]
        quad3PosR = parameters["posR"]

        quad4PosL = (parameters["posL"][0] + offset, parameters["posL"][1])
        quad4PosR = (parameters["posR"][0] + offset, parameters["posR"][1])

        quad2PosL = (parameters["posL"][0], parameters["posL"][1] + offset)
        quad2PosR = (parameters["posR"][0], parameters["posR"][1] + offset)

        quad1PosL = (parameters["posL"][0] + offset,
                     parameters["posL"][1] + offset)
        quad1PosR = (parameters["posR"][0] + offset,
                     parameters["posR"][1] + offset)

        #identical visual stim

        # odd=np.array([quad1PosR,quad2PosR,quad3PosR,quad4PosR])
        # even=np.array([quad1PosL,quad2PosL,quad3PosL,quad4PosL])

        odd = np.array([quad1PosR, quad2PosL, quad3PosL, quad3PosR])
        even = np.array([quad1PosL, quad2PosR, quad4PosL, quad4PosR])

        # print offset
        # print "even is ",odd
        # print "even is ", even
        return odd, even

    def loadingStringParser(self, loadingString):
        """
        Args:
            loadingString:2 letter string,
            r - red sphere
            g - green sphere
            t - tree
            0 - None

            1st letter is even instance
            2nd letter is odd instance

        Returns:

        """
        if len(loadingString) > 2:
            print "only 2 objects in world"

        j = 0
        for i in loadingString:

            if i == "t":
                obj = self.tree
                tex = self.treeTex
                scale = parameters["treeScale"]
                z = parameters["treeZ"]

                plotColor = "k"
                plotMarker = "s"
                load = True

            elif i == "r":
                obj = self.redSphere
                tex = self.redTex
                scale = parameters["sphereScale"]
                z = parameters["sphereZ"]

                plotColor = "r"
                plotMarker = "o"
                load = True
            elif i == "g":
                obj = self.greenSphere
                tex = self.greenTex
                scale = parameters["sphereScale"]
                z = parameters["sphereZ"]

                plotColor = "g"
                plotMarker = "o"
                load = True
            else:
                obj = None
                tex = None
                scale = None
                z = None

                plotColor = None
                plotMarker = None
                load = False

            if j == 0:
                self.evenObj = obj
                self.evenTex = tex
                self.evenScale = scale
                self.evenZ = z

                self.evenPlotColor = plotColor
                self.evenPlotMarker = plotMarker
                self.evenLoad = load
            else:
                self.oddObj = obj
                self.oddTex = tex
                self.oddScale = scale
                self.oddZ = z

                self.oddPlotColor = plotColor
                self.oddPlotMarker = plotMarker
                self.oddLoad = load
            j += 1

    def oddInstance(self, dummy, scale, tex, z):
        dummy.setPos(tuple(parameters["origin"]))
        dummy.setScale(scale)
        dummy.setTexture(tex)

        for i in range(self.odd.shape[0]):
            self.oddPlaceholder = self.render.attach_new_node("odd Holder")
            self.oddPlaceholder.setPos(self.odd[i][0], self.odd[i][1], z)
            dummy.instanceTo(self.oddPlaceholder)

    def evenInstance(self, dummy, scale, tex, z):
        dummy.setPos(tuple(parameters["origin"]))
        dummy.setScale(scale)
        dummy.setTexture(tex)

        for i in range(self.even.shape[0]):
            evenPlaceholder = self.render.attach_new_node("even Holder")
            evenPlaceholder.setPos(self.even[i][0], self.even[i][1], z)
            dummy.instanceTo(evenPlaceholder)

    def plotPositions(self):
        self.tree = self.greenSphere = self.redSphere = self.treeTex = self.greenTex = self.redTex = None
        self.loadingStringParser(parameters["loadingString"])
        plt.scatter(self.odd[:, 0],
                    self.odd[:, 1],
                    color=self.oddPlotColor,
                    marker=self.oddPlotMarker,
                    s=80)
        plt.scatter(self.even[:, 0],
                    self.even[:, 1],
                    color=self.evenPlotColor,
                    marker=self.evenPlotMarker,
                    s=80)  #,marker='|',color='g')

    def worldNameGen(self):
        self.worldFilename = "models/world_" + "size:" + parameters["modelSizeSuffix"] \
                             + "_obj:"   + parameters["loadingString"] + "_num:" \
                             + str(parameters["widthObjects"])      + "x" \
                             + str(parameters["heightObjects"])+"_lattice:"\
                             +str(parameters["lattice"]) + ".bam"
        print "world file name is ", self.worldFilename

    def generate(self):

        self.worldNameGen()
        self.render.writeBamFile(self.worldFilename)
import direct.directbase.DirectStart

if True:

	heightfieldIndex = 2

	#zScale = sys.argv[1]
	zScale = 60

	#heightfieldFile = sys.argv[heightfieldIndex]
	heightfieldFile = "a.png"

	terrain = GeoMipTerrain("hey")
	
	terrain.setHeightfield("terrain.png")
	terrain.setColorMap("terrain_texture.png")  
	#terrain.setColorMap("colourmap.jpg")
	#terrain.setBlockSize(512)
	#terrain.setBruteforce(True)

	
	terrain.generate()

	root = terrain.getRoot()
	root.setSz(60) 
	

	#textures1 = ["default_c.png", "maps/default_d.png", "maps/default_l.png", 
	#			"textures/bigRockFace.png", "textures/hardDirt.png", "textures/grayRock.png", "textures/shortGrass.png"]

	textures = ["hardDirt.png"]
Example #20
0
class Simulation(ShowBase):
    def __init__(self):

        # Heightfield (static)
        self.height = 38.0

        ShowBase.__init__(self)
        base.setBackgroundColor(0.1, 0.1, 0.8, 1)
        base.setFrameRateMeter(True)

        base.cam.setPos(0, -150, 200)
        base.cam.lookAt(0, 0, 0)

        # Light
        alight = AmbientLight('ambientLight')
        alight.setColor(Vec4(0.5, 0.5, 0.5, 1))
        alightNP = render.attachNewNode(alight)

        dlight = DirectionalLight('directionalLight')
        dlight.setDirection(Vec3(1, 1, -1))
        dlight.setColor(Vec4(0.7, 0.7, 0.7, 1))
        dlightNP = render.attachNewNode(dlight)

        render.clearLight()
        render.setLight(alightNP)
        render.setLight(dlightNP)

        # Input
        self.accept('escape', self.doExit)

        inputState.watchWithModifiers('forward', 'w')
        inputState.watchWithModifiers('left', 'a')
        inputState.watchWithModifiers('reverse', 's')
        inputState.watchWithModifiers('backward', 'x')
        inputState.watchWithModifiers('right', 'd')

        # Task
        taskMgr.add(self.update, 'updateWorld')

        # Physics
        self.setup()

    # _____HANDLER_____

    def doExit(self):
        self.cleanup()
        sys.exit(1)

    # ____TASK___

    def processInput(self, dt):
        for vehicle in self.controlVehicles:
            engineForce = 0.0
            brakeForce = 0.0

            if inputState.isSet('forward'):
                engineForce = 1000.0
                brakeForce = 0.0

            if inputState.isSet('backward'):
                engineForce = -1000.0
                brakeForce = 0.0

            if inputState.isSet('reverse'):
                engineForce = 0.0
                brakeForce = 100.0

            if inputState.isSet('left'):
                vehicle.setAngle(True, dt)

            if inputState.isSet('right'):
                vehicle.setAngle(False, dt)

            # Apply engine and brake to rear wheels
            vehicle.setEngineForce(engineForce)
            vehicle.setBrakeForce(brakeForce)

            #print(vehicle.getAngle())

    def update(self, task):
        dt = globalClock.getDt()

        self.processInput(dt)
        self.world.doPhysics(dt, 10, 0.008)

        self.terrain.update()

        return task.cont

    def cleanup(self):
        self.world = None
        self.worldNP.removeNode()

    def setup(self):
        self.worldNP = render.attachNewNode('World')

        # World
        self.world = BulletWorld()
        self.world.setGravity(Vec3(0, 0, -9.81))

        #height map
        # Filename:
        # small ->  'Maps/HeightMapSmall.png'
        # big   ->  'Maps/HeightMapBig.png'
        img = PNMImage(Filename('Maps/HeightMapSmall.png'))
        shape = BulletHeightfieldShape(img, self.height, ZUp)
        shape.setUseDiamondSubdivision(True)

        np = self.worldNP.attachNewNode(BulletRigidBodyNode('Heightfield'))
        np.node().addShape(shape)
        np.setPos(0, 0, 0)
        np.setCollideMask(BitMask32.allOn())
        self.world.attachRigidBody(np.node())

        #adding Texture
        #setColorMap:
        #small ->   'Maps/TextureMapSmall.jpg'
        #big   ->   'Maps/TextureMapBig.jpg'
        self.terrain = GeoMipTerrain('terrain')
        self.terrain.setHeightfield(img)
        self.terrain.setColorMap('Maps/TextureMapSmall.jpg')
        self.terrain.setBruteforce(True)  # level of detail

        self.terrain.setBlockSize(32)
        self.terrain.setNear(50)
        self.terrain.setFar(100)
        self.terrain.setFocalPoint(base.camera)

        rootNP = self.terrain.getRoot()
        rootNP.reparentTo(render)
        rootNP.setSz(self.height)

        offset = img.getXSize() / 2.0 - 0.5
        rootNP.setPos(-offset, -offset, -self.height / 2.0)

        self.makeMapBorders(offset)
        self.terrain.generate()

        # creating vehicles
        #controlled vehicles
        self.controlVehicles = []
        self.controlVehicles.append(
            Vehicle(0, 00, 40, "B", self.worldNP, self.world))

        #vehicles goint to a specific point
        #self.squareVeh = Vehicle(0, 50, 40, "G", self.worldNP, self.world)
        #thread.start_new_thread(self.goSquare, (self.squareVeh, 100))

        #vehicles following user
        #self.followVehicles = []
        #self.followVehicles.append(Vehicle(-offset+10, -offset+10, 40, "R", self.worldNP, self.world))
        #self.followVehicles.append(Vehicle(offset-10, offset-10, 60, "R", self.worldNP, self.world))
        #for veh in self.followVehicles:
        #    thread.start_new_thread(follow, (veh, self.controlVehicles[0]))

        #vehicles for hill climbing
        self.hillVehicles = []
        self.hillVehicles.append(
            Vehicle(-offset + 10, -offset + 10, 40, "R", self.worldNP,
                    self.world))
        self.hillVehicles.append(
            Vehicle(offset - 10, offset - 10, 60, "R", self.worldNP,
                    self.world))
        for veh in self.hillVehicles:
            thread.start_new_thread(blindClimb, (veh, ))

    #function that navigates a vehicle to go in a square
    def goSquare(self, vehicle, size):
        while (True):
            goTo([size, size], vehicle)
            goTo([size, -size], vehicle)
            goTo([-size, -size], vehicle)
            goTo([-size, size], vehicle)

    #Borders around the map that vehicles won't fall from terrain
    def makeMapBorders(self, offset):
        plane1 = BulletPlaneShape(Vec3(1, 0, 0), 0)
        np = self.worldNP.attachNewNode(BulletRigidBodyNode('border1'))
        np.node().addShape(plane1)
        np.setPos(-offset, -offset, -self.height / 2.0)
        np.setCollideMask(BitMask32.allOn())
        self.world.attachRigidBody(np.node())
        plane2 = BulletPlaneShape(Vec3(0, 1, 0), 0)
        np = self.worldNP.attachNewNode(BulletRigidBodyNode('border2'))
        np.node().addShape(plane2)
        np.setPos(-offset, -offset, -self.height / 2.0)
        np.setCollideMask(BitMask32.allOn())
        self.world.attachRigidBody(np.node())
        plane3 = BulletPlaneShape(Vec3(0, -1, 0), 0)
        np = self.worldNP.attachNewNode(BulletRigidBodyNode('border3'))
        np.node().addShape(plane3)
        np.setPos(offset, offset, self.height / 2.0)
        np.setCollideMask(BitMask32.allOn())
        self.world.attachRigidBody(np.node())
        plane4 = BulletPlaneShape(Vec3(-1, 0, 0), 0)
        np = self.worldNP.attachNewNode(BulletRigidBodyNode('border4'))
        np.node().addShape(plane4)
        np.setPos(offset, offset, self.height / 2.0)
        np.setCollideMask(BitMask32.allOn())
        self.world.attachRigidBody(np.node())

    #getting height of map at some point
    def getHeight(self):
        line = CollisionLine(ox, oy, oz, dx, dy, dz)
Example #21
0
class MyApp(ShowBase):
    def __init__(self):

        ShowBase.__init__(self)

        self.disableMouse()

        self.cam_away = 20
        self.cam_elevation = 5
        self.rot_rate = .5

        self.cam_dist = (self.cam_away**2 + self.cam_elevation**2)**.5

        #######
        self.environ = GeoMipTerrain("terrain")
        self.environ.setHeightfield("../terrain/first.png")
        self.environ.setColorMap("../terrain/first-c.png")
        self.environ.generate()
        self.environ.getRoot().setScale(1, 1, 100)
        self.environ.getRoot().setPos(0, 0, 0)
        self.environ.getRoot().reparentTo(render)
        self.environ.getRoot().setName("terrain")
        self.environ.getRoot().setCollideMask(BitMask32.bit(0))
        #######

        self.pandaActor = Actor("models/panda", {"walk": "models/panda-walk"})
        self.pandaActor.setScale(.5, .5, .5)
        self.pandaActor.setHpr(180, 0, 0)
        self.pandaActor.setPos(50, 50, 50)
        self.pandaActor.reparentTo(render)
        self.pandaActor.setPythonTag("moving", False)
        self.avatarYawRot = 0
        self.avatarPitchRot = 0

        #self.teapot = loader.loadModel("models/teapot")
        #self.teapot.setScale(1, 1, 1)
        #self.teapot.setPos(60, 60, 50)
        #self.teapot.reparentTo(render)

        self.cam.setHpr(0, 0, 0)

        self.taskMgr.add(self.updateTerrain, "update terrain", priority=35)

        self.keys = {"w": 0, "s": 0, "a": 0, "d": 0}

        self.accept("w", self.setKey, ["w", 1])
        self.accept("w-up", self.setKey, ["w", 0])
        self.accept("s", self.setKey, ["s", 1])
        self.accept("s-up", self.setKey, ["s", 0])
        self.accept("a", self.setKey, ["a", 1])
        self.accept("a-up", self.setKey, ["a", 0])
        self.accept("d", self.setKey, ["d", 1])
        self.accept("d-up", self.setKey, ["d", 0])
        self.accept("wheel_up", self.zoomCamera, [-1])
        self.accept("wheel_down", self.zoomCamera, [1])

        self.accept('window-event', self.handleWindowEvent)

        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.cTrav = CollisionTraverser()

        self.pandaGroundRay = CollisionRay(0, 0, 0, 0, 0, 1)
        self.pandaGroundRayNode = CollisionNode('pandaGroundRay')
        self.pandaGroundRayNode.addSolid(self.pandaGroundRay)
        self.pandaGroundRayNode.setFromCollideMask(BitMask32.bit(0))
        self.pandaGroundRayNode.setIntoCollideMask(BitMask32.allOff())
        self.pandaGroundRayNodepath = self.pandaActor.attachNewNode(
            self.pandaGroundRayNode)
        self.pandaGroundRayNodepath.show()
        self.pandaGroundCollisionHandler = CollisionHandlerFloor()
        self.pandaGroundCollisionHandler.addCollider(
            self.pandaGroundRayNodepath, self.pandaActor)
        self.cTrav.addCollider(self.pandaGroundRayNodepath,
                               self.pandaGroundCollisionHandler)

        #self.teapotRay = CollisionSphere(0,0,0,5)
        #self.teapotGroundCol = CollisionNode('teapotRay')
        #self.teapotGroundCol.addSolid(self.teapotRay)
        #self.teapotGroundCol.setFromCollideMask(BitMask32.allOff())
        #self.teapotGroundCol.setIntoCollideMask(BitMask32.bit(0))
        #self.teapotGroundColNp = self.teapot.attachNewNode(self.teapotGroundCol)
        #self.teapotGroundHandler = CollisionHandlerQueue()
        #self.cTrav.addCollider(self.teapotGroundColNp, self.teapotGroundHandler)

    def setKey(self, key, value):

        self.keys[key] = value

    def handleWindowEvent(self, window=None):

        wp = window.getProperties()

        self.win_center_x = wp.getXSize() / 2
        self.win_center_y = wp.getYSize() / 2

    def zoomCamera(self, direction):

        self.cam_away += direction

    def updateTerrain(self, task):

        dt = globalClock.getDt()

        self.pandaActor.setY(self.pandaActor, -50 * dt)

        if self.keys["w"]: self.pandaActor.setZ(self.pandaActor, 20 * dt)

        if self.keys["s"]: self.pandaActor.setZ(self.pandaActor, -20 * dt)

        if self.keys["a"]: self.pandaActor.setX(self.pandaActor, 20 * dt)

        if self.keys["d"]: self.pandaActor.setX(self.pandaActor, -20 * dt)

        mouse_pos = self.win.getPointer(0)

        #Mouse-based viewpoint rotation

        current_mouse_x = mouse_pos.getX()
        #current_mouse_y = mouse_pos.getY()

        mouse_shift_x = current_mouse_x - self.last_mouse_x
        #mouse_shift_y = current_mouse_y - self.last_mouse_y

        self.last_mouse_x = current_mouse_x
        #self.last_mouse_y = current_mouse_y

        if current_mouse_x == 0 or current_mouse_x >= (self.win_center_x *
                                                       1.5):

            base.win.movePointer(0, self.win_center_x, self.win_center_y)
            self.last_mouse_x = self.win_center_x

        #if current_mouse_y == 0 or current_mouse_y >= (self.win_center_y * 1.5):

        #    base.win.movePointer(0, self.win_center_x, self.win_center_y)
        #    self.last_mouse_y = self.win_center_y

        yaw_shift = -((mouse_shift_x) * self.rot_rate)
        #pitch_shift = -((mouse_shift_y) * self.rot_rate)

        self.avatarYawRot += yaw_shift
        #self.avatarPitchRot += pitch_shift

        self.pandaActor.setH(self.pandaActor, yaw_shift)
        self.cam.setH(self.cam, yaw_shift)

        cam_x_adjust = self.cam_away * sin(radians(self.avatarYawRot))
        cam_y_adjust = self.cam_away * cos(radians(self.avatarYawRot))

        self.cam.setPos(self.pandaActor.getX() + cam_x_adjust,
                        self.pandaActor.getY() - cam_y_adjust,
                        self.pandaActor.getZ() + self.cam_elevation)

        #self.cTrav.traverse(render)

        #entries = []

        #for i in range(self.pandaGroundCollisionHandler.getNumEntries()):

        #    entry = self.pandaGroundCollisionHandler.getEntry(i)
        #    entries.append(entry)

        #for entry in entries:

        #    print entry.getIntoNode().getName()

        #    if entry.getIntoNode().getName() == "terrain":

        #        print "shiet"

        #        self.pandaActor.setZ(entry.getSurfacePoint(render).getZ())

        return Task.cont
import direct.directbase.DirectStart

if True:

    heightfieldIndex = 2

    #zScale = sys.argv[1]
    zScale = 60

    #heightfieldFile = sys.argv[heightfieldIndex]
    heightfieldFile = "a.png"

    terrain = GeoMipTerrain("hey")

    terrain.setHeightfield("bin/terrain.png")
    terrain.setColorMap("bin/terrain_texure.png")
    #terrain.setColorMap("colourmap.jpg")
    #terrain.setBlockSize(512)
    #terrain.setBruteforce(True)

    terrain.generate()

    root = terrain.getRoot()
    root.setSz(5)

    print root.getBounds()

    for i in range(0, 128):

        print terrain.getElevation(128, i + 1)
import direct.directbase.DirectStart

if True:

	heightfieldIndex = 2

	#zScale = sys.argv[1]
	zScale = 60

	#heightfieldFile = sys.argv[heightfieldIndex]
	heightfieldFile = "a.png"

	terrain = GeoMipTerrain("hey")
	
	terrain.setHeightfield("bin/terrain.png")
	terrain.setColorMap("bin/terrain_texure.png")  
	#terrain.setColorMap("colourmap.jpg")
	#terrain.setBlockSize(512)
	#terrain.setBruteforce(True)

	
	terrain.generate()

	root = terrain.getRoot()
	root.setSz(5) 

	print root.getBounds()

	for i in range(0, 128):

		print terrain.getElevation(128, i+1)
Example #24
0
import direct.directbase.DirectStart

if True:

    heightfieldIndex = 2

    #zScale = sys.argv[1]
    zScale = 60

    #heightfieldFile = sys.argv[heightfieldIndex]
    heightfieldFile = "a.png"

    terrain = GeoMipTerrain("hey")

    terrain.setHeightfield("terrain.png")
    terrain.setColorMap("terrain_texture.png")
    #terrain.setColorMap("colourmap.jpg")
    #terrain.setBlockSize(512)
    #terrain.setBruteforce(True)

    terrain.generate()

    root = terrain.getRoot()
    root.setSz(60)

    #textures1 = ["default_c.png", "maps/default_d.png", "maps/default_l.png",
    #			"textures/bigRockFace.png", "textures/hardDirt.png", "textures/grayRock.png", "textures/shortGrass.png"]

    textures = ["hardDirt.png"]
    textures = []
Example #25
0
class MyApp(ShowBase):

    def __init__(self):

        ShowBase.__init__(self)
 
        self.disableMouse()

        self.cam_away = 20
        self.cam_elevation = 5
        self.rot_rate = .5

        self.cam_dist = (self.cam_away**2 + self.cam_elevation**2) ** .5

        #######
        self.environ = GeoMipTerrain("terrain")
        self.environ.setHeightfield("../terrain/first.png")
        self.environ.setColorMap("../terrain/first-c.png")
        self.environ.generate()
        self.environ.getRoot().setScale(1, 1, 100)
        self.environ.getRoot().setPos(0, 0, 0)
        self.environ.getRoot().reparentTo(render)
        self.environ.getRoot().setName("terrain")
        self.environ.getRoot().setCollideMask(BitMask32.bit(0))
        #######

        self.pandaActor = Actor("models/panda",
                                {"walk": "models/panda-walk"})
        self.pandaActor.setScale(.5, .5, .5)
        self.pandaActor.setHpr(180, 0, 0)
        self.pandaActor.setPos(50, 50, 50)
        self.pandaActor.reparentTo(render)
        self.pandaActor.setPythonTag("moving", False)
        self.avatarYawRot = 0
        self.avatarPitchRot = 0

        #self.teapot = loader.loadModel("models/teapot")
        #self.teapot.setScale(1, 1, 1)
        #self.teapot.setPos(60, 60, 50)
        #self.teapot.reparentTo(render)

        self.cam.setHpr(0, 0, 0)
 
        self.taskMgr.add(self.updateTerrain, "update terrain", priority = 35)

        self.keys = {"w" : 0, "s" : 0, "a" : 0, "d" : 0}

        self.accept("w", self.setKey, ["w", 1])
        self.accept("w-up", self.setKey, ["w", 0])
        self.accept("s", self.setKey, ["s", 1])
        self.accept("s-up", self.setKey, ["s", 0])
        self.accept("a", self.setKey, ["a", 1])
        self.accept("a-up", self.setKey, ["a", 0])
        self.accept("d", self.setKey, ["d", 1])
        self.accept("d-up", self.setKey, ["d", 0])
        self.accept("wheel_up", self.zoomCamera, [-1])
        self.accept("wheel_down", self.zoomCamera, [1])

        self.accept('window-event', self.handleWindowEvent)

        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.cTrav = CollisionTraverser()

        self.pandaGroundRay = CollisionRay(0,0,0,0,0,1)
        self.pandaGroundRayNode = CollisionNode('pandaGroundRay')
        self.pandaGroundRayNode.addSolid(self.pandaGroundRay)
        self.pandaGroundRayNode.setFromCollideMask(BitMask32.bit(0))
        self.pandaGroundRayNode.setIntoCollideMask(BitMask32.allOff())
        self.pandaGroundRayNodepath = self.pandaActor.attachNewNode(self.pandaGroundRayNode)
        self.pandaGroundRayNodepath.show()
        self.pandaGroundCollisionHandler = CollisionHandlerFloor()
        self.pandaGroundCollisionHandler.addCollider(self.pandaGroundRayNodepath, self.pandaActor)
        self.cTrav.addCollider(self.pandaGroundRayNodepath, self.pandaGroundCollisionHandler)

        #self.teapotRay = CollisionSphere(0,0,0,5)
        #self.teapotGroundCol = CollisionNode('teapotRay')
        #self.teapotGroundCol.addSolid(self.teapotRay)
        #self.teapotGroundCol.setFromCollideMask(BitMask32.allOff())
        #self.teapotGroundCol.setIntoCollideMask(BitMask32.bit(0))
        #self.teapotGroundColNp = self.teapot.attachNewNode(self.teapotGroundCol)
        #self.teapotGroundHandler = CollisionHandlerQueue()
        #self.cTrav.addCollider(self.teapotGroundColNp, self.teapotGroundHandler)

    def setKey(self, key, value):

        self.keys[key] = value

    def handleWindowEvent(self, window=None):

        wp = window.getProperties()

        self.win_center_x = wp.getXSize() / 2
        self.win_center_y = wp.getYSize() / 2

    def zoomCamera(self, direction):

        self.cam_away += direction

    def updateTerrain(self, task):

        dt = globalClock.getDt()

        self.pandaActor.setY(self.pandaActor, -50 * dt)

        if self.keys["w"]: self.pandaActor.setZ(self.pandaActor, 20 * dt)

        if self.keys["s"]: self.pandaActor.setZ(self.pandaActor, -20 * dt)

        if self.keys["a"]: self.pandaActor.setX(self.pandaActor, 20 * dt)

        if self.keys["d"]: self.pandaActor.setX(self.pandaActor, -20 * dt)

        mouse_pos = self.win.getPointer(0)

        #Mouse-based viewpoint rotation

        current_mouse_x = mouse_pos.getX()
        #current_mouse_y = mouse_pos.getY()

        mouse_shift_x = current_mouse_x - self.last_mouse_x
        #mouse_shift_y = current_mouse_y - self.last_mouse_y

        self.last_mouse_x = current_mouse_x
        #self.last_mouse_y = current_mouse_y

        if current_mouse_x == 0 or current_mouse_x >= (self.win_center_x * 1.5):

            base.win.movePointer(0, self.win_center_x, self.win_center_y)
            self.last_mouse_x = self.win_center_x

        #if current_mouse_y == 0 or current_mouse_y >= (self.win_center_y * 1.5):

        #    base.win.movePointer(0, self.win_center_x, self.win_center_y)
        #    self.last_mouse_y = self.win_center_y

        yaw_shift = -((mouse_shift_x) * self.rot_rate)
        #pitch_shift = -((mouse_shift_y) * self.rot_rate)

        self.avatarYawRot += yaw_shift
        #self.avatarPitchRot += pitch_shift

        self.pandaActor.setH(self.pandaActor, yaw_shift)
        self.cam.setH(self.cam, yaw_shift)

        cam_x_adjust = self.cam_away*sin(radians(self.avatarYawRot))  
        cam_y_adjust = self.cam_away*cos(radians(self.avatarYawRot))

        self.cam.setPos(self.pandaActor.getX() + cam_x_adjust, self.pandaActor.getY() - cam_y_adjust, 
                        self.pandaActor.getZ() + self.cam_elevation)






        #self.cTrav.traverse(render)

        #entries = []

        #for i in range(self.pandaGroundCollisionHandler.getNumEntries()):

        #    entry = self.pandaGroundCollisionHandler.getEntry(i)
        #    entries.append(entry)

        #for entry in entries:

        #    print entry.getIntoNode().getName()

        #    if entry.getIntoNode().getName() == "terrain":

        #        print "shiet"

        #        self.pandaActor.setZ(entry.getSurfacePoint(render).getZ())

        return Task.cont