internal virtual void GetFinishers(int worldX, int worldZ, ushort chunkX, ushort chunkZ, int height, ref ushort[,,] voxels) { if (structureSpawns != null) { foreach (StructureSpawn structureSpawn in structureSpawns) { if (GenerationUtilities.White(worldX, worldZ, 1, 1, structureSpawn.NoiseOffset.x, structureSpawn.NoiseOffset.y) < structureSpawn.Chance) { for (ushort x = 0; x < structureSpawn.Structure.Dimension.x; x++) { for (ushort y = 0; y < structureSpawn.Structure.Dimension.y; y++) { for (ushort z = 0; z < structureSpawn.Structure.Dimension.z; z++) { if (structureSpawn.Structure.Voxels[x, y, z] != 0 && Chunk.InChunk(chunkX + x + structureSpawn.Structure.Origin.x, height + y + structureSpawn.Structure.Origin.y, chunkZ + z + structureSpawn.Structure.Origin.z)) { voxels[chunkX + x + structureSpawn.Structure.Origin.x, height + y + structureSpawn.Structure.Origin.y, chunkZ + z + structureSpawn.Structure.Origin.z] = structureSpawn.Structure.Voxels[x, y, z]; } } } } } } } }
public StructureSpawn(Structure structure, Spawn spawn) { Structure = structure; Chance = spawn.Chance; int nameHashCode = structure.Name.GetHashCode(); int voxelSize = structure.Voxels.GetLength(0) + structure.Voxels.GetLength(1) + structure.Voxels.GetLength(2); NoiseOffset = new Vector2i((int)(GenerationUtilities.White(nameHashCode, voxelSize) * nameHashCode * 0.00001), (int)(-GenerationUtilities.White(nameHashCode / 10, -voxelSize) * structure.Name.Length * voxelSize * nameHashCode.ToString().Length * 5)); }