/// <summary> /// Create the mesh for the given side of this block. /// </summary> /// <param name="side">The side for which to create the mesh.</param> /// <returns>The newly created Mesh for the given side.</returns> private Mesh CreateMesh(CubeSide side) { Mesh mesh = new Mesh { name = "ScriptedMesh" + side.ToString(), vertices = QuadMeshValueUtil.GetVertices(side), normals = QuadMeshValueUtil.GetNormals(side), uv = MeshUvCache.Instance.GetUvArray(this.blockType, side), triangles = QuadMeshValueUtil.Triangles, }; mesh.RecalculateBounds(); return(mesh); }
/// <summary> /// Create the Quad for the given side of the block. /// </summary> /// <param name="side"></param> private void CreateQuad(CubeSide side) { Mesh mesh = new Mesh(); mesh.name = "ScriptedMesh" + side.ToString(); Vector2[] test; if (bType == BlockType.GRASS && side == CubeSide.TOP) { test = MeshUvCache.Instance.GetUvArray((int)ImageBlockIndex.GRASS_TOP); } else if (bType == BlockType.GRASS && side == CubeSide.BOTTOM) { test = MeshUvCache.Instance.GetUvArray((int)ImageBlockIndex.DIRT); } else { test = MeshUvCache.Instance.GetUvArray((int)ImageBlockIndex.GRASS_SIDE); } mesh.vertices = QuadMeshValueUtil.GetVertices(side); mesh.normals = QuadMeshValueUtil.GetNormals(side); mesh.uv = test; mesh.triangles = QuadMeshValueUtil.Triangles; mesh.RecalculateBounds(); GameObject quad = new GameObject("Quad"); quad.transform.parent = this.gameObject.transform; MeshFilter meshFilter = (MeshFilter)quad.AddComponent(typeof(MeshFilter)); meshFilter.mesh = mesh; MeshRenderer renderer = quad.AddComponent(typeof(MeshRenderer)) as MeshRenderer; renderer.material = cubeMaterial; }