public void Initialize(EditableMesh parent, List <int> indices)
    {
        this.parent  = parent;
        this.indices = indices;

        transform.parent = parent.transform;
    }
            private Vector3[] m_CachedVertPos; //used in dragging handle, cache the starting position of verts

            #endregion "data"

            #region "public method"
            // public method

            public void Init(EditableMesh m, MeshSelection sel, Pivotor p)
            {
                m_Mesh      = m;
                m_Selection = sel;
                m_Pivot     = p;
                Dbg.Assert(m_Pivot != null, "SoftSelection.Init: pivotor is null");

                m_Range = 1f;

                m_Cont = new _Data[m.mesh.vertexCount];
                for (int i = 0; i < m_Cont.Length; ++i)
                {
                    m_Cont[i] = new _Data();
                }

                m_EffectVertIdxLst = new VLst();

                m_Mode        = Mode.Off;
                m_PrepareMode = PrepareMode.Always;

                // atten curve
                var res = (SoftSelectionRes)AssetDatabase.LoadAssetAtPath(SOFTSEL_ATTEN_CURVE_PATH, typeof(SoftSelectionRes));

                if (res == null)
                {
                    res = ScriptableObject.CreateInstance <SoftSelectionRes>();
                    AssetDatabase.CreateAsset(res, SOFTSEL_ATTEN_CURVE_PATH);
                    res = (SoftSelectionRes)AssetDatabase.LoadAssetAtPath(SOFTSEL_ATTEN_CURVE_PATH, typeof(SoftSelectionRes));
                    Dbg.Assert(res != null, "SoftSelection.Init: failed to create curve asset for SoftSelection");
                }
                m_Atten = res.attenCurve;

                MeshManipulator.evtHandleDraggingStateChanged += this._OnHandleDraggingStateChanged;
            }
示例#3
0
            public void Init(EditableMesh m)
            {
                sm_Instance = this;

                m_EditMesh = m;
                m_RealMesh = m_EditMesh.mesh;

                //ETimeProf prof = new ETimeProf();
                m_DegRTriCont = new DegradeRTriCont();

                // map VV <-> RV
                m_VVertCont = new VVertCont();
                _InitVVertTable();

                //prof.Click("VMesh.Init.VVertTable:");

                // establish VEdge table
                m_VEdgeCont = new VEdgeCont();
                _InitVEdgeTable();
                //prof.Click("VMesh.Init.VEdgeTable:");

                // establish VQuad table
                m_VFaceCont = new VFaceCont();
                _InitVFaceTable();
                //prof.Click("VMesh.Init.VQuadTable:");
            }
            public void Init(EditableMesh m)
            {
                m_Mesh    = m;
                m_Blocked = false;

                MeshManipulator.evtHandleDraggingStateChanged += this._OnHandleDraggingStateChanged;
                MeshUndoer.AddDeleMeshModified(this._OnMeshModifed);
            }
示例#5
0
            // public method

            public void Init(EditableMesh m, MeshSelection sel)
            {
                m_Mesh = m;
                Dbg.Assert(m_Mesh != null, "EdgeLoopSelectOp.Init: m_Mesh = null");
                m_Selection = sel;

                m_EdgeSet = new HashSet <VEdge>();
            }
示例#6
0
            // public method

            public void Init(EditableMesh m)
            {
                m_Mesh     = m;
                m_WorldPos = m_Mesh.transform.position;

                m_CursorImg = AssetDatabase.LoadAssetAtPath(CURSOR_IMG_PATH, typeof(Texture2D)) as Texture2D;
                Dbg.Assert(m_CursorImg != null, "EditorCursor.Init: failed to load cursor img: {0}", CURSOR_IMG_PATH);

                m_HalfOff = new Vector2(m_CursorImg.width * 0.5f, m_CursorImg.height * 0.5f);
            }
 /// <summary>
 /// Repositions the verts in the editable mesh (that this VertGizmo controls)
 /// to correspond with the position of this VertGizmo.
 /// </summary>
 private void repositionVerts()
 {
     foreach (var vertInd in _vertIndices)
     {
         if (vertInd < EditableMesh.Verts.Count)
         {
             EditableMesh.Verts[vertInd] = transform.position;
             EditableMesh.RefreshMesh();
         }
     }
 }
示例#8
0
    public void Initialize(EditableMesh parent, EditableVertex point0, EditableVertex point1, int tIndex)
    {
        this.parent = parent;
        this.point0 = point0;
        this.point1 = point1;

        tIndices.Add(tIndex);

        transform.parent = parent.transform;
        CalculateTransform();
    }
示例#9
0
    void UpdateMesh(EditableMesh mesh, float time)
    {
        int i = 0;


        while (i < 81)
        {
            Vector3 position    = mesh.GetVertex(i, 1);
            Vector3 newPosition = new Vector3(position.x,
                                              GetSurfaceY(position.x, time),
                                              position.z);

            mesh.SetVertex(i, 1, newPosition);
            i++;
        }

        mesh.UpdateMesh();
    }
示例#10
0
            // unity event handlers

            void Awake()
            {
                //Dbg.Log("MorphProc.Awake: {0}, {1}", name, GetInstanceID());

                if (m_Mesh == null)
                {
                    m_Mesh = EditableMesh.New(gameObject);
                }

                var m = m_Mesh.mesh;

                MeshUtil.MarkDynamic(m);

                if (m_Deforms == null)
                { //should be created by MeshManipulator
                    m_Deforms = new List <ShapeKeyMorphSO>();
                }
                else
                { //other circumstances, switch playMode, reload assembly, etc.
                    Dbg.Assert(m_Deforms.Count > 0, "MorphProc.Awake: the MorphProc is not null but empty?!");
                    m_OutData = ShapeKeyDataDiff.TempVarNew(m_Deforms[BASIS_MORPH_IDX]);
                }

                if (m_CmpWeights == null)
                {
                    m_CmpWeights = new float[MAX_SHAPEKEY_CNT];
                }
                if (m_MeshCache == null)
                {
                    //Dbg.Log("MorphProc.Awake: init MeshCache: {0}", name);
                    m_MeshCache = new MeshCacheRT();
                }

                // force apply weight on mesh, to fix the mesh deforming leftover when switch between playMode and editMode
                if (m_Deforms.Count > 0)
                {
                    ResetToBasisShape();
                    for (int i = 1; i < m_Deforms.Count; ++i) //don't check the first base shape
                    {
                        float animWeight = Mathf.Clamp(_GetAnimWeight(i), 0, 100f);
                        _ApplyWeightChange(i, animWeight);
                    }
                }
            }
示例#11
0
    void Start()
    {
        mesh1 = new EditableMesh();
        mesh1.Create(15.0f, 3.0f, 80, 1);
        mesh1.SetColor(GetBottomColor(1.0f));
        mesh1.SetPosition(new Vector3(0.0f, 0.0f, -1.0f));

        mesh2 = new EditableMesh();
        mesh2.Create(15.0f, 3.0f, 80, 1);
        mesh2.SetColor(GetBottomColor(0.7f));
        mesh2.SetPosition(new Vector3(0.0f, 0.0f, -0.9f));

        mesh3 = new EditableMesh();
        mesh3.Create(15.0f, 3.0f, 80, 1);
        mesh3.SetColor(GetBottomColor(0.6f));
        mesh3.SetPosition(new Vector3(0.0f, 0.0f, -0.8f));

        mesh4 = new EditableMesh();
        mesh4.Create(15.0f, 3.0f, 80, 1);
        mesh4.SetColor(GetBottomColor(0.5f));
        mesh4.SetPosition(new Vector3(0.0f, 0.0f, -0.7f));

        mesh5 = new EditableMesh();
        mesh5.Create(15.0f, 3.0f, 80, 1);
        mesh5.SetColor(GetBottomColor(0.4f));
        mesh5.SetPosition(new Vector3(0.0f, 0.0f, -0.6f));

        mesh6 = new EditableMesh();
        mesh6.Create(15.0f, 3.0f, 80, 1);
        mesh6.SetColor(GetBottomColor(0.3f));
        mesh6.SetPosition(new Vector3(0.0f, 0.0f, -0.5f));

        mesh7 = new EditableMesh();
        mesh7.Create(15.0f, 3.0f, 80, 1);
        mesh7.SetColor(GetBottomColor(0.2f));
        mesh7.SetPosition(new Vector3(0.0f, 0.0f, -0.4f));

        mesh8 = new EditableMesh();
        mesh8.Create(15.0f, 3.0f, 80, 1);
        mesh8.SetColor(GetBottomColor(0.1f));
        mesh8.SetPosition(new Vector3(0.0f, 0.0f, -0.3f));
    }
示例#12
0
 public void Init(EditableMesh mesh, Pivotor pivot)
 {
     m_Mesh  = mesh;
     m_Pivot = pivot;
 }
 public void Init(EditableMesh m)
 {
     m_Mesh = m;
 }
示例#14
0
 public void Init(EditableMesh m)
 {
     m_Mesh = m;
     //m_Pivot = p;
 }
示例#15
0
 public void Init(EditableMesh m, Pivotor pivot)
 {
     m_Mesh  = m;
     m_Pivot = pivot;
     m_Tr    = m_Mesh.transform;
 }
示例#16
0
        protected VirgisFeature _drawFeature(Geometry tin, Feature feature = null)
        {
            //Create the GameObjects
            GameObject dataTIN = Instantiate(MeshPrefab, transform);

            EditableMesh mesh = dataTIN.GetComponent <EditableMesh>();

            if (feature != null)
            {
                mesh.feature = feature;
            }

            List <Geometry> trigeos  = new List <Geometry>();
            List <Vector3d> trivects = new List <Vector3d>();
            List <int>      tris     = new List <int>();

            for (int i = 0; i < tin.GetGeometryCount(); i++)
            {
                trigeos.Add(tin.GetGeometryRef(i));
            }

            HashSet <Vector3d> vertexhash = new HashSet <Vector3d>();

            for (int i = 0; i < trigeos.Count; i++)
            {
                Geometry tri        = trigeos[i];
                Geometry linearring = tri.GetGeometryRef(0);
                for (int j = 0; j < 3; j++)
                {
                    double[] argout = new double[3];
                    linearring.GetPoint(j, argout);
                    Vector3d vertex = new Vector3d(argout);
                    vertexhash.Add(vertex);
                    trivects.Add(vertex);
                }
                tri.Dispose();
                linearring.Dispose();
            }

            List <Vector3d> vertexes = vertexhash.ToList();

            foreach (Vector3d vertex in trivects)
            {
                tris.Add(vertexes.IndexOf(vertex));
            }

            DMesh3 dmesh = DMesh3Builder.Build <Vector3d, int, int>(vertexes, tris);
            string crs;

            tin.GetSpatialReference().ExportToWkt(out crs, null);
            dmesh.AttachMetadata("CRS", crs);

            mesh.Draw(dmesh, bodyMain, WireframeMaterial, true);

            //if (symbology.ContainsKey("body") && symbology["body"].ContainsKey("Label") && symbology["body"].Label != null && (feature?.ContainsKey(symbology["body"].Label) ?? false)) {
            //    //Set the label
            //    GameObject labelObject = Instantiate(LabelPrefab, dataPoly.transform, false);
            //    labelObject.transform.Translate(dataPoly.transform.TransformVector(Vector3.up) * symbology["point"].Transform.Scale.magnitude, Space.Self);
            //    Text labelText = labelObject.GetComponentInChildren<Text>();
            //    labelText.text = (string) feature.Get(symbology["body"].Label);
            //}

            return(mesh);
        }