Break apart loops into cythonizable ones

This commit is contained in:
David Vierra 2015-01-03 13:17:12 -10:00
parent cd52c59518
commit d997a44264

View File

@ -36,38 +36,42 @@ class BlockModelMesh(object):
blocktypes = self.sectionUpdate.blocktypes blocktypes = self.sectionUpdate.blocktypes
areaBlocks = self.sectionUpdate.areaBlocks areaBlocks = self.sectionUpdate.areaBlocks
faceQuadVerts = [] faceQuadVerts = []
cdef unsigned short y, z, x, ID, meta
cdef short dx, dy, dz,
cdef unsigned short nx, ny, nz, nID
for y in xrange(1, 17): for y in range(1, 17):
yield for z in range(1, 17):
for z, x in itertools.product(xrange(1, 17), xrange(1, 17)): for x in range(1, 17):
ID = areaBlocks[y, z, x] ID = areaBlocks[y, z, x]
if ID == 0: if ID == 0:
continue continue
meta = section.Data[y-1, z-1, x-1] meta = section.Data[y-1, z-1, x-1]
block = blocktypes[ID, meta] block = blocktypes[ID, meta]
if block.renderType != 3: # only model blocks for now if block.renderType != 3: # only model blocks for now
continue continue
nameAndState = block.internalName + block.blockState nameAndState = block.internalName + block.blockState
quads = blockModels.cookedModels[nameAndState] quads = blockModels.cookedModels[nameAndState]
for face, xyzuvc, cullface in quads: for face, xyzuvc, cullface in quads:
if cullface is not None: if cullface is not None:
dx, dy, dz = cullface.vector dx, dy, dz = cullface.vector
nx = x + dx nx = x + dx
ny = y + dy ny = y + dy
nz = z + dz nz = z + dz
nID = areaBlocks[ny, nz, nx] nID = areaBlocks[ny, nz, nx]
if nID != 0: if nID != 0:
nBlock = blocktypes[nID] nBlock = blocktypes[nID]
if nBlock.opaqueCube: if nBlock.opaqueCube:
continue continue
verts = numpy.array(xyzuvc) verts = numpy.array(xyzuvc)
verts.shape = 1, 4, 6 verts.shape = 1, 4, 6
verts[..., :3] += (x - 1, y - 1 + (cy << 4), z - 1) verts[..., :3] += (x - 1, y - 1 + (cy << 4), z - 1)
faceQuadVerts.append(verts) faceQuadVerts.append(verts)
# log.info("Block %s:\nVertices: %s", (x-1, y-1, z-1), verts) # log.info("Block %s:\nVertices: %s", (x-1, y-1, z-1), verts)
# raise SystemExit # raise SystemExit
if len(faceQuadVerts): if len(faceQuadVerts):