//--------------------------------------------------------------------------- #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; }
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)); }
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); } }
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()); }
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); }