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)