Exemple #1
0
 def getTile(self, xStart, yStart, scale):
     """
     returns a tile for the specified positions and size
     """
     sizeY = tileMapSize
     sizeX = tileMapSize
     getHeight = self.getHeight
     
     noiseTex=Texture("NoiseTex")
     noiseTex.setup2dTexture(sizeX, sizeY, Texture.TUnsignedByte, Texture.FRgb)
     p=noiseTex.modifyRamImage()
     step=noiseTex.getNumComponents()*noiseTex.getComponentWidth()
     scalar=.4
     for y in range(sizeY):
         yPos=scalar*(1.0*y*scale/(sizeY-1)+yStart)
         for x in range(sizeX):
             height = getHeight(scalar*(1.0*x*scale/(sizeX-1) + xStart), yPos)
             r=min(255,max(0,height*256))
             g=r*256
             b=g*256
             index = (sizeX * y + x)*step
             p.setElement(index, b%256)#Blue
             p.setElement(index+1, g%256)#Green
             p.setElement(index+2, r)#Red
     
     return Tile({"height":Map("height", noiseTex)},[], xStart, yStart, scale)