Esempio n. 1
0
        public void Build(DrawCallBatcher batcher, ref BlockData block, BlockFace face, bool backFace, ref Vector3[] vecs, LocalPools pools)
        {
            int iface = (int)face;

            // Randomize the color a bit
            Color32 color = BlockDatabase.GetBlockInfo(block.BlockType).Color;

            if (block.BlockType != BlockType.None)
            {
                float value = m_noise.GetValue(vecs[0] + vecs[1] + vecs[2] + vecs[3]); // -1.0f..1.0f
                float noise = (255.0f * value) * 0.02f;                                // Deviation of 0.02f points from the original
                int   n     = (int)noise;
                byte  r     = (byte)Math.Max(0, Math.Min(color.r + n, 255));
                byte  g     = (byte)Math.Max(0, Math.Min(color.g + n, 255));
                byte  b     = (byte)Math.Max(0, Math.Min(color.b + n, 255));
                color = new Color32(r, g, b, color.a);
            }

            VertexData[] vertexData = pools.PopVertexDataArray(4);

            for (int i = 0; i < 4; i++)
            {
                VertexData data = vertexData[i] = pools.PopVertexData();
                data.Vertex = vecs[i];
                data.Color  = color;
                data.UV     = AddFaceUV(i, GetTexture(iface), backFace);
                data.Normal = SNormals[iface][i];
            }

            batcher.AddFace(vertexData, backFace);

            pools.PushVertexDataArray(vertexData);
        }
Esempio n. 2
0
 public bool IsSolid()
 {
     return(BlockDatabase.GetBlockInfo(BlockType).IsSolid);
 }