/// <summary> /// Build up ushort[] for mesh trig /// </summary> /// <param name="p_triangles"></param> /// <param name="p_verticeIndex"></param> /// <returns></returns> private ushort[] GetTrigStructure(List <Triangle> p_triangles, VerticesIndex p_verticeIndex) { ushort[] newMeshTrig = new ushort[p_triangles.Count * 3]; for (int i = 0; i < p_triangles.Count; i++) { try { ushort a = (ushort)p_verticeIndex.GetIndex(p_triangles[i].nodes[0]); ushort b = (ushort)p_verticeIndex.GetIndex(p_triangles[i].nodes[1]); ushort c = (ushort)p_verticeIndex.GetIndex(p_triangles[i].nodes[2]); int trigIndex = i * 3; newMeshTrig[trigIndex] = a; newMeshTrig[trigIndex + 1] = b; newMeshTrig[trigIndex + 2] = c; } catch { Debug.LogError("p_verticeIndex.VectorToIndex Eror"); } } return(newMeshTrig); }
public MeshBuilder(List <Triangle> p_triangles) { this._triangles = p_triangles; verticesIndex = BuildVerticesIndex(this._triangles); _meshTrig = GetTrigStructure(this._triangles, verticesIndex); _meshVertices = verticesIndex.vertices; }
/// <summary> /// Build up vertices index table /// </summary> /// <param name="p_triangles"></param> /// <returns></returns> private VerticesIndex BuildVerticesIndex(List <Triangle> p_triangles) { VerticesIndex verticesIndex = new VerticesIndex(); for (int i = 0; i < p_triangles.Count; i++) { for (int n = 0; n < p_triangles[i].nodes.Count; n++) { verticesIndex.AddVertices(p_triangles[i].nodes[n]); } } return(verticesIndex); }
public GroundMesh(int lTri, int nbVer, Vector3 centerPos) { triangles = new int[lTri]; vertex = new Vector3[nbVer]; normals = new Vector3[nbVer]; computedTriangles = new int[lTri * 2]; computedVertex = new Vector3[nbVer + 1]; computedNormals = new Vector3[nbVer + 1]; smoothTriangles = new int[lTri * 5]; smoothVertex = new Vector3[(nbVer * 4) + 1]; smoothNormals = new Vector3[(nbVer * 4) + 1]; UVs = new Vector2[(nbVer * 4) + 1]; indexes = new VerticesIndex(nbVer - 1); centerPosition = centerPos; }
/// <summary> /// First init /// </summary> public void Init(GroundMesh meshObject) { meshObject.centerIndex = CustomGeneric.ArrayContain(meshObject.smoothVertex, meshObject.centerPosition); _indexes = meshObject.indexes; _stateHealth = 1; _walkable = true; _elevation = 1f; _isElevating = false; _neighborElevationID = -1; _groundMesh = meshObject; _poluted = false; _deforested = false; _axis = GetCenterPosition(); _personnalMesh = GetComponent <MeshFilter>().mesh; _personnalCollider = GetComponents <MeshCollider>(); _state = CellState.MOSS; UpdateHeight(0); InitColor(); }