public void LoadModel(int sizeX, int sizeY, int sizeZ, byte[,,] data) { ModelLeaf leaf = new ModelLeaf(modelID, sizeX, sizeY, sizeZ, data); leafComponents.Add(modelID, leaf); modelID++; }
void traverseCompositeTree(IModelTreeComponent component, IntermediateMap map, int offsetX, int offsetY, int offsetZ) { if (component is ModelLeaf) { ModelLeaf model = (ModelLeaf)component; for (int x = 0; x < model.sizeX; x++) { for (int y = 0; y < model.sizeY; y++) { for (int z = 0; z < model.sizeZ; z++) { int colourIndex = model.data[x, y, z]; //Implicit conversion map.setBlockAt(offsetX + x, offsetY + y, offsetZ + z, new Block(colourIndex)); } } } } else if (component is ModelTree) { ModelTree tree = (ModelTree)component; foreach (IModelTreeComponent child in tree.components) { traverseCompositeTree(child, map, offsetX + tree.offsetX, offsetY + tree.offsetY, offsetZ + tree.offsetZ); } } }