Example #1
0
        // private method

        private void _PrepareEdgeIndices()
        {
            VMesh vmesh = VMesh.Instance;

            VVert[] allVVerts = vmesh.GetAllVVerts();
            VEdge[] allVEdges = vmesh.GetAllVActiveEdges();

            Dictionary <VVert, int> vert2idx = new Dictionary <VVert, int>();

            for (int i = 0; i < allVVerts.Length; ++i)
            {
                VVert v = allVVerts[i];
                vert2idx[v] = i;
            }

            m_EdgeIndices = new int[allVEdges.Length * 2];

            for (int i = 0; i < allVEdges.Length; i++)
            {
                VEdge e     = allVEdges[i];
                VVert v0    = e.GetVVert(0);
                VVert v1    = e.GetVVert(1);
                int   vidx0 = vert2idx[v0];
                int   vidx1 = vert2idx[v1];

                m_EdgeIndices[i * 2]     = vidx0;
                m_EdgeIndices[i * 2 + 1] = vidx1;
            }
        }
Example #2
0
        /// <summary>
        /// update the markers, if not dirty, do nothing;
        ///
        /// will retrieve info from Mesh & Selection & other related external data-structures
        /// </summary>
        public void UpdateMarkers()
        {
            if (!Dirty)
            {
                return;
            }

            //Mesh m = m_EditMesh.mesh;
            //Transform meshTr = m_EditMesh.transform;
            //Vector3[] verts = MeshCache.Instance.vertices;

            VMesh vmesh = VMesh.Instance;

            // vert positions
            VVert[] allVVerts = vmesh.GetAllVVerts();
            int     vcnt      = allVVerts.Length;

            Vector3[] allVVertPos = new Vector3[vcnt];
            for (int i = 0; i < vcnt; ++i)
            {
                allVVertPos[i] = allVVerts[i].GetWorldPos();
            }

            // colors
            Color32[] colors = new Color32[vcnt];
            for (int i = 0; i < vcnt; ++i)
            {
                VVert oneVVert = allVVerts[i];
                if (m_Selection.IsSelectedVert(oneVVert.RepVert))
                {
                    colors[i] = SelectedVertColor;
                }
                else
                {
                    colors[i] = NonSelectedVertColor;
                }
            }

            // set to mesh(vert)
            m_VertMarker.SetVerts(allVVertPos); //indices are set altogether with vertices
            m_VertMarker.SetColors(colors);

            // set to mesh(edge)
            m_EdgeMarker.SetVerts(allVVertPos);
            m_EdgeMarker.SetColors(colors);
            m_EdgeMarker.SetIndices(m_EdgeIndices);

            Dirty = false;
        }