void addLineToMesh(Mesh mesh, float3 from, float3 to, Color color)
    {
        vertexInfo[] lineVerts      = new vertexInfo[] { new vertexInfo(from, color), new vertexInfo(to, color) };
        int          numberOfPoints = vertices.Count;

        int[] indicesForLines = new int[] { 0 + numberOfPoints, 1 + numberOfPoints };
        vertices.AddRange(lineVerts);
        indices.AddRange(indicesForLines);
    }
Example #2
0
 private void Awake()
 {
     //Fetch the Renderer from the GameObject
     rend = GetComponent <Renderer>();
     //Set the main Color of the Material to white
     rend.material.color = Color.white;
     information         = new vertexInfo
     {
         staticVertex = false
     };
     numDynamicVertexCollided = 0;
     adjacentVertexNum        = new HashSet <int>();
 }
Example #3
0
        private void readElements(string file)
        {
            int countObject = 0;


            OBJObject pCurObject = new OBJObject();

            string[] input = File.ReadAllLines(file);
            for (int i = 0; i < input.Length; i++)
            {
                string[] split = input[i].Split(new Char[] { ' ' });
                switch (split[0])
                {
                case "v": // Plain vertex
                    //get and increment the current vertex
                    Vector3 vertex = new Vector3();
                    // initialize the vertex values (important if not all values are in file)
                    vertex.X = vertex.Y = vertex.Z = 0.0f;
                    //fill the values with the data in the line
                    vertex.X = System.Convert.ToSingle(split[1]);
                    vertex.Y = System.Convert.ToSingle(split[2]);
                    vertex.Z = System.Convert.ToSingle(split[3]);
                    m_vertexPositionArray.Add(vertex);
                    break;

                case "vt": // Texture vertex
                    break;

                case "vn": // vertex normal
                    break;

                case "g": // new group
                    if (input[i].Length > 2)
                    {
                        pCurObject = m_objects[countObject++];
                        string[] sub = input[i].Split(new Char[] { ' ' });
                        m_name = sub[1];
                    }
                    break;

                case "s": // new smoothing group
                    break;

                case "f": // new face
                    List <vertexInfo> verts = new List <vertexInfo>();
                    vertexInfo        vert  = new vertexInfo();
                    vert.vp = vert.vt = vert.vn = -1;
                    if (split.Length < 4)
                    {
                        break;
                    }
                    for (int j = 1; j < split.Length; j++)
                    {
                        string[] v = split[j].Split(new Char[] { '/' });
                        if (v.Length > 1)
                        {
                            vert.vp = System.Convert.ToInt16(v[0]);
                            vert.vt = System.Convert.ToInt16(v[1]);
                            vert.vn = System.Convert.ToInt16(v[2]);
                            verts.Add(vert);
                        }
                        else
                        {
                            vert.vp = System.Convert.ToInt16(split[1]);
                            verts.Add(vert);
                            vert.vp = System.Convert.ToInt16(split[2]);
                            verts.Add(vert);
                            vert.vp = System.Convert.ToInt16(split[3]);
                            verts.Add(vert);
                        }
                    }
                    OBJFace newFace = new OBJFace();
                    pCurObject.m_faces.Add(newFace);

                    newFace.m_vertexIndex[0] = verts[0].vp;
                    newFace.m_vertexIndex[1] = verts[1].vp;
                    newFace.m_vertexIndex[2] = verts[2].vp;
                    break;
                }
            }
        }