public void TestRenderIsland()
        {
            var dirtMaterial = new VoxelMaterial();

            dirtMaterial.Texture = TW.Assets.LoadTexture("GrassGreenTexture0006.jpg");
            var size   = 20;
            var island = new ArrayFiniteVoxels(new Point3(size, size, size));

            island.NodeSize = 0.25f;
            for (int i = 0; i < size; i++)
            {
                for (int j = i; j < size - i; j++)
                {
                    for (int k = i; k < size - i; k++)
                    {
                        island.SetVoxel(new Point3(j, -i + size - 1, k), dirtMaterial);
                    }
                }
            }

            var c    = new VoxelMeshBuilder();
            var mesh = c.BuildMesh(island);


            var e = new Entity();

            e.Mesh = mesh;
        }
        public void TestRenderEmptyVoxel()
        {
            var dirtMaterial = new VoxelMaterial();

            dirtMaterial.Texture = TW.Assets.LoadTexture("GrassGreenTexture0006.jpg");
            var island = new ArrayFiniteVoxels(new Point3(1, 1, 1));

            var c    = new VoxelMeshBuilder();
            var mesh = c.BuildMesh(island);


            var e = new Entity();

            e.Mesh = mesh;
        }
示例#3
0
        public IFiniteVoxels GenerateIsland(int size)
        {
            var mat = new VoxelMaterial();
            var map = GenerateBottomIslandHeightmap(size);

            MakeIslandShape(map);

            var max = 0f;

            for (int x = 0; x < map.Size.X; x++)
            {
                for (int y = 0; y < map.Size.Y; y++)
                {
                    var val = map[new Point2(x, y)];
                    max = val > max ? val : max;
                }
            }



            var ret = new ArrayFiniteVoxels(new Point3(map.Size.X, (int)Math.Floor(max) + 1, map.Size.Y));

            for (int x = 0; x < map.Size.X; x++)
            {
                for (int y = 0; y < map.Size.Y; y++)
                {
                    var val = map[new Point2(x, y)];
                    for (int i = -(int)val; i < -2; i++)
                    {
                        ret.SetVoxel(new Point3(x, i + ret.Size.Y - 1, y), mat);
                    }
                }
            }

            return(ret);
        }