Advertisement
Wallace543

Slow part

Oct 4th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.52 KB | None | 0 0
  1. class chunk(object):
  2.     x = 0
  3.     y = 0
  4.     done = False
  5.     offsetx = 0
  6.     offsety = 0
  7.     ID = 0
  8.     def __init__(self,x,y):
  9.         self.x = x
  10.         self.y = y
  11.         self.offsetx = x
  12.         self.offsety = y              
  13.         self.x1 = self.x+chunksize #bottom corner  
  14.         self.y1 = self.y+chunksize #top corner
  15.     def makeChunk(self):
  16.         global name
  17.         if [self.x,self.y] not in coords:
  18.             self.n = PNMImage(chunksize+1,chunksize+1)
  19.             self.t = PNMImage(chunksize+1,chunksize+1)
  20.             for y in xrange(chunksize+1):
  21.                 for x in xrange(chunksize+1):
  22.                     p = perlin.noise(x+self.offsetx,y-self.offsety)
  23. ##                    p+=0.5
  24.                     if p >= 0:
  25.                         p*=127.5
  26.                         p+=5
  27.                         self.n.setRedVal(x,y,p)
  28.                         self.n.setGreenVal(x,y,p)
  29.                         self.n.setBlueVal(x,y,p)
  30.                         if p <= 10:
  31.                             value = sand.getXelVal(x,y)
  32.                             self.t.setXelVal(x,y,value)
  33.                         elif p > 10 and p <= 20:
  34.                             value = sand.getXelVal(x,y)
  35.                             self.t.setXelVal(x,y,value)
  36.                         elif p > 20 and p <= 80:
  37.                             value = grass.getXelVal(x,y)
  38.                             self.t.setXelVal(x,y,value)
  39.                         elif p > 80 and p <= 90:
  40.                             value = mountain.getXelVal(x,y)
  41.                             self.t.setXelVal(x,y,value)
  42.                         elif p > 90:
  43.                             value = snow.getXelVal(x,y)
  44.                             self.t.setXelVal(x,y,value)
  45.                     elif p < 0:
  46.                         p+=2
  47.                         value = sand.getXelVal(x,y)
  48.                         self.t.setXelVal(x,y,value)
  49.                         self.n.setRedVal(x,y,p)
  50.                         self.n.setGreenVal(x,y,p)
  51.                         self.n.setBlueVal(x,y,p)
  52.             self.n.makeGrayscale()
  53. ##            name+=1
  54. ##            name1 = str(name)
  55. ##            self.t.write("maps/"+name1+"_.png")
  56. ##            self.n.write("maps/"+name1+".png")
  57.             #-------------slow code--------------------#
  58.             self.T = Texture()
  59.             self.T.load(self.t)
  60.             self.T.setWrapU(Texture.WMClamp)
  61.             self.T.setWrapV(Texture.WMClamp)
  62.             #GeoMipTerrain Stuff
  63.             self.terrain = GeoMipTerrain("terrain")
  64.             self.terrain.setHeightfield(self.n)
  65.             self.terrain.setBlockSize(8)#128)
  66.             self.terrain.setNear(256)
  67.             self.terrain.setFar(512)
  68.             self.terrain.setMinLevel(2)
  69.             self.terrain.setFocalPoint(base.camera)
  70.             self.terrain.setBorderStitching(True)
  71.             root = self.terrain.getRoot()
  72.             root.reparentTo(render)
  73.             root.setSz(500)#150)
  74.             self.scaleZ = root.getSz()
  75.             self.terrain.setAutoFlatten(GeoMipTerrain.AFMStrong)
  76.             self.terrain.generate()
  77.             ts = TextureStage("ts0")
  78.             root.setTexture(ts,self.T)
  79.             chunks.append(self.terrain)
  80.             chunks1.append(root)
  81.             root.setPos(self.x,self.y,0)
  82.             #-------------slow code----------------------#
  83.             coords.append([self.x,self.y])
  84.             self.done = True
  85.             self.ID = [self.offsetx/chunksize,self.offsety/chunksize]
  86. ##            print len(chunks)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement