//---------------------------------------------------------------------------

	#region Private Member Data

	//---------------------------------------------------------------------------
	

			
	//---------------------------------------------------------------------------

	#endregion

	//---------------------------------------------------------------------------

	#region Accessors and Mutators

	//---------------------------------------------------------------------------
		

			
	//---------------------------------------------------------------------------

	#endregion

	//---------------------------------------------------------------------------

	#region Public Member Functions

	//---------------------------------------------------------------------------

	public static OpenCog.Builder.OCMeshBuilder Build(OpenCog.BlockSet.BaseBlockSet.OCCactusBlock cactus) {
		OpenCog.Builder.OCMeshBuilder mesh = new OpenCog.Builder.OCMeshBuilder();
		for(int i=0; i<vertices.Length; i++) {
			mesh.AddFaceIndices( 0 );
			mesh.AddVertices( vertices[i], Vector3.zero );
			mesh.AddNormals( normals[i] );
			
			Vector2[] texCoords = cactus.GetFaceUV((OCCubeBlock.CubeFace)i);
			mesh.AddTexCoords(texCoords);
			mesh.AddFaceColor( new Color(0,0,0,1) );
		}
		return mesh;
	}
	public static OpenCog.Builder.OCMeshBuilder Build(OpenCog.BlockSet.BaseBlockSet.OCFluidBlock fluid)
	{
		OpenCog.Builder.OCMeshBuilder mesh = new OpenCog.Builder.OCMeshBuilder();
		for(int i=0; i<OpenCog.Builder.OCCubeBuilder.vertices.Length; i++)
		{
			mesh.AddFaceIndices(0);
			mesh.AddVertices(OpenCog.Builder.OCCubeBuilder.vertices[i], UnityEngine.Vector3.zero);
			mesh.AddNormals(OpenCog.Builder.OCCubeBuilder.normals[i]);
			mesh.AddTexCoords(fluid.GetFaceUV());
			mesh.AddFaceColor(new UnityEngine.Color(0, 0, 0, 1));
		}
		return mesh;
	}
	public static OpenCog.Builder.OCMeshBuilder Build(OpenCog.BlockSet.BaseBlockSet.OCCrossBlock cross)
	{
		OpenCog.Builder.OCMeshBuilder mesh = new OpenCog.Builder.OCMeshBuilder();
		
		mesh.AddIndices(0, indices);
		mesh.AddVertices(vertices, Vector3.zero);
		mesh.AddNormals(normals);
		mesh.AddTexCoords(cross.GetFaceUV());
		mesh.AddTexCoords(cross.GetFaceUV());
		mesh.AddTexCoords(cross.GetFaceUV());
		mesh.AddTexCoords(cross.GetFaceUV());
		mesh.AddColors(new Color(0, 0, 0, 1), vertices.Length);
		
		return mesh;
	}
Exemplo n.º 4
0
        private static void BuildFace(OpenCog.BlockSet.BaseBlockSet.OCCubeBlock.CubeFace face, OpenCog.BlockSet.BaseBlockSet.OCCubeBlock cube, OpenCog.Map.OCBlockDirection direction, Vector3 localPos, OpenCog.Builder.OCMeshBuilder mesh)
        {
            int iFace = (int)face;

            mesh.AddFaceIndices(cube.AtlasID);
            mesh.AddVertices(vertices[iFace], localPos);
            mesh.AddNormals(normals[iFace]);
            mesh.AddTexCoords(cube.GetFaceUV(face, direction));
        }
Exemplo n.º 5
0
 private static void BuildFaceLight(OpenCog.BlockSet.BaseBlockSet.OCCubeBlock.CubeFace face, OpenCog.Map.OCMap map, Vector3i pos, OpenCog.Builder.OCMeshBuilder mesh)
 {
     foreach (Vector3 ver in vertices[(int)face])
     {
         Color color = OpenCog.Builder.OCBuildUtils.GetSmoothVertexLight(map, pos, ver, face);
         mesh.AddColor(color);
     }
 }
Exemplo n.º 6
0
        public static void Build(Vector3i localPos, Vector3i worldPos, OpenCog.Map.OCMap map, OpenCog.Builder.OCMeshBuilder mesh, bool onlyLight)
        {
            OpenCog.Map.OCBlockData block = map.GetBlock(worldPos);
            OCCubeBlock             cube  = (OCCubeBlock)block.block;

            OpenCog.Map.OCBlockDirection direction = block.GetDirection();

            for (int i = 0; i < 6; i++)
            {
                OCCubeBlock.CubeFace face    = faces[i];
                Vector3i             dir     = directions[i];
                Vector3i             nearPos = worldPos + dir;
                if (IsFaceVisible(map, nearPos))
                {
                    if (!onlyLight)
                    {
                        BuildFace(face, cube, direction, localPos, mesh);
                    }
                    BuildFaceLight(face, map, worldPos, mesh);
                }
            }
        }
        //---------------------------------------------------------------------------

        #region Private Member Data

        //---------------------------------------------------------------------------



        //---------------------------------------------------------------------------

        #endregion

        //---------------------------------------------------------------------------

        #region Accessors and Mutators

        //---------------------------------------------------------------------------



        //---------------------------------------------------------------------------

        #endregion

        //---------------------------------------------------------------------------

        #region Public Member Functions

        //---------------------------------------------------------------------------

        public static void Build(Vector3i localPos, Vector3i worldPos, OpenCog.Map.OCMap map, OpenCog.Builder.OCMeshBuilder mesh, bool onlyLight)
        {
            OCGlassBlock glass = (OCGlassBlock)map.GetBlock(worldPos).block;

            for (int i = 0; i < 6; i++)
            {
                OCCubeBlock.CubeFace face    = OpenCog.Builder.OCCubeBuilder.faces[i];
                Vector3i             dir     = OpenCog.Builder.OCCubeBuilder.directions[i];
                Vector3i             nearPos = worldPos + dir;
                if (IsFaceVisible(map, nearPos, face))
                {
                    if (!onlyLight)
                    {
                        BuildFace(face, glass, (UnityEngine.Vector3)localPos, mesh);
                    }
                    BuildFaceLight(face, map, worldPos, mesh);
                }
            }

            BuildInterior(glass, mesh);
        }
        private static void BuildFaceLight(OpenCog.BlockSet.BaseBlockSet.OCCubeBlock.CubeFace face, OpenCog.Map.OCMap map, Vector3i pos, OpenCog.Builder.OCMeshBuilder mesh)
        {
            Vector3i dir = OpenCog.Builder.OCCubeBuilder.directions[(int)face];

            UnityEngine.Color color = OpenCog.Builder.OCBuildUtils.GetBlockLight(map, pos + dir);
            mesh.AddFaceColor(color);
        }
        private static void BuildFace(OpenCog.BlockSet.BaseBlockSet.OCCubeBlock.CubeFace face, OpenCog.BlockSet.BaseBlockSet.OCGlassBlock glass, UnityEngine.Vector3 localPos, OpenCog.Builder.OCMeshBuilder mesh)
        {
            int iFace = (int)face;

            mesh.AddFaceIndices(glass.AtlasID);
            mesh.AddVertices(OpenCog.Builder.OCCubeBuilder.vertices[iFace], localPos);
            mesh.AddNormals(OpenCog.Builder.OCCubeBuilder.normals[iFace]);
            mesh.AddTexCoords(glass.GetFaceUV());
        }
Exemplo n.º 10
0
 public override void Build(Vector3i localPos, Vector3i worldPos, OpenCog.Map.OCMap map, OpenCog.Builder.OCMeshBuilder mesh, bool onlyLight)
 {
     OpenCog.Builder.OCFluidBuilder.Build(localPos, worldPos, map, mesh, onlyLight);
 }