示例#1
0
 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));
        }