예제 #1
0
        public override void AssignText(MarkerWithText mrkr, MeshPoint vpoint)
        {
            var pvrt = MeshMGMT.GetSelectedVert();

            if ((vpoint.uvpoints.Count > 1) || (pvrt == vpoint))
            {
                Texture tex = MeshMGMT.target.meshRenderer.sharedMaterial.mainTexture;

                if (pvrt == vpoint)
                {
                    mrkr.textm.text = (vpoint.uvpoints.Count > 1) ? ((vpoint.uvpoints.IndexOf(MeshMGMT.SelectedUV) + 1).ToString() + "/" + vpoint.uvpoints.Count.ToString() +
                                                                     (vpoint.SmoothNormal ? "s" : "")) : "";
                    float tsize = tex == null ? 128 : tex.width;
                    mrkr.textm.text +=
                        ("uv: " + (MeshMGMT.SelectedUV.EditedUV.x * tsize) + "," + (MeshMGMT.SelectedUV.EditedUV.y * tsize));
                }
                else
                {
                    mrkr.textm.text = vpoint.uvpoints.Count.ToString() +
                                      (vpoint.SmoothNormal ? "s" : "");
                }
            }
            else
            {
                mrkr.textm.text = "";
            }
        }
예제 #2
0
        void InitVertsIfNUll()
        {
            if (Grid == null)
            {
                return;
            }

            if (Grid.vertPrefab == null)
            {
                Grid.vertPrefab = Resources.Load("prefabs/vertex") as GameObject;
            }

            if ((Grid.verts == null) || (Grid.verts.Length == 0) || (Grid.verts[0].go == null))
            {
                Grid.verts = new MarkerWithText[vertsShowMax];

                for (int i = 0; i < vertsShowMax; i++)
                {
                    MarkerWithText v = new MarkerWithText();
                    Grid.verts[i]         = v;
                    v.go                  = GameObject.Instantiate(Grid.vertPrefab);
                    v.go.transform.parent = Grid.transform;
                    v.Init();
                }
            }

            Grid.pointedVertex.Init();
            Grid.selectedVertex.Init();

#if UNITY_EDITOR
            EditorApplication.update -= EditingUpdate;
            if (!PainterCamera.Inst.ApplicationIsAboutToEnterPlayMode())
            {
                EditorApplication.update += EditingUpdate;
            }
#endif
        }
예제 #3
0
        public override void AssignText(MarkerWithText mrkr, MeshPoint vpoint)
        {
            var pvrt = MeshMGMT.GetSelectedVert();

            if ((vpoint.uvpoints.Count > 1) || (pvrt == vpoint))
            {
                //Texture tex = meshMGMT.target.GetTextureOnMaterial();//meshRenderer.sharedMaterial.mainTexture;

                if (pvrt == vpoint)
                {
                    mrkr.textm.text = (vpoint.uvpoints.Count > 1) ? ((vpoint.uvpoints.IndexOf(MeshMGMT.SelectedUV) + 1).ToString() + "/" + vpoint.uvpoints.Count.ToString() +
                                                                     (vpoint.SmoothNormal ? "s" : "")) : "";
                }
                else
                {
                    mrkr.textm.text = vpoint.uvpoints.Count.ToString() +
                                      (vpoint.SmoothNormal ? "s" : "");
                }
            }
            else
            {
                mrkr.textm.text = "";
            }
        }
예제 #4
0
 public virtual void AssignText(MarkerWithText mrkr, MeshPoint vpoint)
 {
     mrkr.textm.text = "";
 }
예제 #5
0
        void SORT_AND_UPDATE_UI()
        {
            if (Grid == null)
            {
                return;
            }

            if (Grid.verts[0].go == null)
            {
                InitVertsIfNUll();
            }

            // if (_meshTool == MeshTool.vertices)
            //   DrowLinesAroundTargetPiece();

            UpdateLocalSpaceV3s();

            edMesh.SortAround(collisionPosLocal, false);

            float scaling = 16;

            Grid.selectedVertex.go.SetActiveTo(false);
            Grid.pointedVertex.go.SetActiveTo(false);

            for (int i = 0; i < vertsShowMax; i++)
            {
                Grid.verts[i].go.SetActiveTo(false);
            }

            if (MeshTool.ShowVertices)
            {
                for (int i = 0; i < vertsShowMax; i++)
                {
                    if (edMesh.meshPoints.Count > i)
                    {
                        MarkerWithText mrkr   = Grid.verts[i];
                        MeshPoint      vpoint = edMesh.meshPoints[i];

                        Vector3 worldPos = vpoint.WorldPos;
                        float   tmpScale;
                        tmpScale = Vector3.Distance(worldPos,
                                                    Transform.gameObject.TryGetCameraTransform().position) / scaling;

                        if (GetPointedVert() == vpoint)
                        {
                            mrkr = Grid.pointedVertex; tmpScale *= 2;
                        }
                        else if (GetSelectedVert() == edMesh.meshPoints[i])
                        {
                            mrkr      = Grid.selectedVertex;
                            tmpScale *= 1.5f;
                        }

                        mrkr.go.SetActiveTo(true);
                        mrkr.go.transform.position   = worldPos;
                        mrkr.go.transform.rotation   = Transform.gameObject.TryGetCameraTransform().rotation;
                        mrkr.go.transform.localScale = new Vector3((IsInTrisSet(vpoint) ? 1.5f : 1) * tmpScale, tmpScale, tmpScale);

                        Ray        tmpRay = new Ray();
                        RaycastHit hit;
                        tmpRay.origin    = Transform.gameObject.TryGetCameraTransform().position;
                        tmpRay.direction = mrkr.go.transform.position - tmpRay.origin;

                        if ((Physics.Raycast(tmpRay, out hit, 1000)) && (!PlaytimeToolComponent.MeshEditorIgnore.Contains(hit.transform.tag)))
                        {
                            mrkr.go.SetActiveTo(false);
                        }

                        if (SameTrisAsPointed(vpoint))
                        {
                            mrkr.textm.color = Color.white;
                        }
                        else
                        {
                            mrkr.textm.color = Color.gray;
                        }


                        MeshTool.AssignText(mrkr, vpoint);
                    }
                }
            }
        }