private void SortAndUpdate() { if (!Grid) { return; } if (!Grid.vertices[0].go) { InitGridIfNull(); } UpdateLocalSpaceMousePosition(); editedMesh.SortAround(collisionPosLocal, false); const float scaling = 16; Grid.selectedVertex.go.SetActive(false); Grid.pointedVertex.go.SetActive(false); for (var i = 0; i < verticesShowMax; i++) { Grid.vertices[i].go.SetActive(false); } if (!MeshTool.ShowVertices) { return; } var camTf = CurrentViewTransform(); for (var i = 0; i < verticesShowMax; i++) { RaycastHit hit; if (editedMesh.meshPoints.Count <= i) { continue; } var mark = Grid.vertices[i]; var point = editedMesh.meshPoints[i]; var worldPos = point.WorldPos; var tmpScale = Vector3.Distance(worldPos, camTf.position) / scaling; if (point == editedMesh.PointedVertex) { mark = Grid.pointedVertex; tmpScale *= 2; } else if (GetSelectedVertex() == editedMesh.meshPoints[i]) { mark = Grid.selectedVertex; tmpScale *= 1.5f; } var go = mark.go; var tf = go.transform; go.SetActive(true); tf.position = worldPos; tf.rotation = camTf.rotation; tf.localScale = new Vector3((editedMesh.IsInTriangleSet(point) ? 1.5f : 1) * tmpScale, tmpScale, tmpScale); var tmpRay = new Ray { origin = camTf.position }; tmpRay.direction = tf.position - tmpRay.origin; if (Physics.Raycast(tmpRay, out hit, 1000) && (!meshEditorIgnore.Contains(hit.transform.tag))) { mark.go.SetActive(false); } mark.textm.color = SameTriangleAsPointed(point) ? Color.white : Color.gray; MeshTool.AssignText(mark, point); } }
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); } } } }