Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        public MeshBuilder(List <Triangle> p_triangles)
        {
            this._triangles = p_triangles;
            verticesIndex   = BuildVerticesIndex(this._triangles);

            _meshTrig     = GetTrigStructure(this._triangles, verticesIndex);
            _meshVertices = verticesIndex.vertices;
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
    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;
    }
Beispiel #5
0
 /// <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();
 }