Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class chunk(object):
- x = 0
- y = 0
- done = False
- offsetx = 0
- offsety = 0
- ID = 0
- def __init__(self,x,y):
- self.x = x
- self.y = y
- self.offsetx = x
- self.offsety = y
- self.x1 = self.x+chunksize #bottom corner
- self.y1 = self.y+chunksize #top corner
- def makeChunk(self):
- global name
- if [self.x,self.y] not in coords:
- self.n = PNMImage(chunksize+1,chunksize+1)
- self.t = PNMImage(chunksize+1,chunksize+1)
- for y in xrange(chunksize+1):
- for x in xrange(chunksize+1):
- p = perlin.noise(x+self.offsetx,y-self.offsety)
- ## p+=0.5
- if p >= 0:
- p*=127.5
- p+=5
- self.n.setRedVal(x,y,p)
- self.n.setGreenVal(x,y,p)
- self.n.setBlueVal(x,y,p)
- if p <= 10:
- value = sand.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- elif p > 10 and p <= 20:
- value = sand.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- elif p > 20 and p <= 80:
- value = grass.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- elif p > 80 and p <= 90:
- value = mountain.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- elif p > 90:
- value = snow.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- elif p < 0:
- p+=2
- value = sand.getXelVal(x,y)
- self.t.setXelVal(x,y,value)
- self.n.setRedVal(x,y,p)
- self.n.setGreenVal(x,y,p)
- self.n.setBlueVal(x,y,p)
- self.n.makeGrayscale()
- ## name+=1
- ## name1 = str(name)
- ## self.t.write("maps/"+name1+"_.png")
- ## self.n.write("maps/"+name1+".png")
- #-------------slow code--------------------#
- self.T = Texture()
- self.T.load(self.t)
- self.T.setWrapU(Texture.WMClamp)
- self.T.setWrapV(Texture.WMClamp)
- #GeoMipTerrain Stuff
- self.terrain = GeoMipTerrain("terrain")
- self.terrain.setHeightfield(self.n)
- self.terrain.setBlockSize(8)#128)
- self.terrain.setNear(256)
- self.terrain.setFar(512)
- self.terrain.setMinLevel(2)
- self.terrain.setFocalPoint(base.camera)
- self.terrain.setBorderStitching(True)
- root = self.terrain.getRoot()
- root.reparentTo(render)
- root.setSz(500)#150)
- self.scaleZ = root.getSz()
- self.terrain.setAutoFlatten(GeoMipTerrain.AFMStrong)
- self.terrain.generate()
- ts = TextureStage("ts0")
- root.setTexture(ts,self.T)
- chunks.append(self.terrain)
- chunks1.append(root)
- root.setPos(self.x,self.y,0)
- #-------------slow code----------------------#
- coords.append([self.x,self.y])
- self.done = True
- self.ID = [self.offsetx/chunksize,self.offsety/chunksize]
- ## print len(chunks)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement