public Vector3 FaceCenterDirection(GeoFace face) { Vector3 v = FaceCenter(face); v = v - center; return(v.normalized); }
public void ClickSpreadFace(GeoFace face) { int color = face.color == 0 ? 1 : 0; geometry.SetSpreadFaceStyle(face, color); geometryBehaviour.GeometryElementColorChange(face, color); }
private void RemoveFace(GeoFace geoFace) { FaceBehaviour faceBehaviour = faceMap[geoFace]; Destroy(faceBehaviour.gameObject); faceMap.Remove(geoFace); }
public void SetFace(GeoFace face) { element = face; ButtonBoard buttonBoard = InitRootButtonBoard(); List <ButtonAtRoot> buttonAtRoot = new List <ButtonAtRoot>(); buttonAtRoot.Add(ColorButton); buttonAtRoot.Add(StyleButton); buttonAtRoot.Add(DisplayButton); buttonAtRoot.Add(SignButton); if (!face.isBased) { buttonAtRoot.Add(DeleteButton); } buttonBoard.CountOfButtons = () => buttonAtRoot.Count; buttonBoard.ButtonAtIndex = (button, i) => buttonAtRoot[i](button); buttonBoard.InitButtons(); overlay.SetActive(true); }
public void Init(GeoFace geoFace) { geoController = GameObject.Find("/GeoController").GetComponent <GeoController>(); this.geoFace = geoFace; mesh = new Mesh(); colliderMesh = new Mesh(); MeshFilter meshFilter = gameObject.AddComponent <MeshFilter>(); meshRenderer = gameObject.AddComponent <MeshRenderer>(); meshCollider = gameObject.AddComponent <MeshCollider>(); meshFilter.sharedMesh = mesh; meshCollider.sharedMesh = colliderMesh; meshRenderer.sharedMaterial = ConfigManager.FaceStyle[0].Material; SetColorIndex(0); SetStyleIndex(0); StyleManager.OnStyleChange += () => { SetColorIndex(0); SetStyleIndex(0); }; visiable = true; interactable = true; }
private Material GetMaterial(GeoFace geoFace, Vtf vtf, int textureGroup) { if (geoFace.TextureName != null) { string textureName = Path.GetFileNameWithoutExtension(geoFace.TextureName); if (vtf != null && textureName[0] == 'V') { if (textureName.EndsWithFast("BO DY")) { textureName = vtf.Maps[12]; } else { string key = textureName.Substring(1).Replace(" ", "").Replace("LF", "LT") + ".TMT"; if (vtf.Tmts.TryGetValue(key, out Tmt tmt)) { textureName = tmt.TextureNames[textureGroup]; } } } return(GetTextureMaterial(textureName, geoFace.SurfaceFlags2 == 5 || geoFace.SurfaceFlags2 == 7)); } return(GetColorMaterial("color" + geoFace.Color, geoFace.Color)); }
public override void InitWithGeometry(Geometry geometry) { int count = face.ids.Length; VertexUnit[] faceUnits = new VertexUnit[count]; for (int i = 0; i < count; i++) { faceUnits[i] = geometry.VertexUnit(face.ids[i]); } units = new VertexUnit[] { }; List <GeoElement> elementList = new List <GeoElement>(); GeoFace geoFace = new GeoFace(faceUnits); elementList.Add(geoFace); for (int i = 0; i < count; i++) { int id1 = face.ids[i]; int index2 = (i + 1) % count; int id2 = face.ids[index2]; if (!geometry.IsEdge(id1, id2)) { elementList.Add(new GeoEdge(faceUnits[i], faceUnits[index2])); } } elements = elementList.ToArray(); dependencies.AddRange(faceUnits); }
private Material GetMaterial(GeoFace geoFace, Vtf vtf) { if (geoFace.TextureName != null) { var textureName = geoFace.TextureName; if (vtf != null && geoFace.TextureName.StartsWith("V")) { if (geoFace.TextureName.EndsWith("BO DY")) { textureName = vtf.Maps[12]; } else { var key = geoFace.TextureName.Substring(1).Replace(" ", "").Replace("LF", "LT") + ".TMT"; if (vtf.Tmts.ContainsKey(key)) { //Debug.Log("Vehicle tmt reference: " + geoFace.TextureName + " decoded: " + key); var tmt = vtf.Tmts[key]; textureName = tmt.TextureNames[0]; } } } return(GetTextureMaterial(textureName, geoFace.SurfaceFlags2 == 5 || geoFace.SurfaceFlags2 == 7)); //Debug.Log(geoFace.TextureName + "color=" + geoFace.Color + " flag1=" + geoFace.SurfaceFlags1 + " flag2=" + geoFace.SurfaceFlags2, mat); } return(GetColorMaterial("color" + geoFace.Color, geoFace.Color)); }
private void CircleMesh(Circle circle) { float Radius = circle.radius; int segments = Segments; Vector3 vertice = circle.Vertice; int vertices_count = Segments + 1; Vector3[] vertices = new Vector3[vertices_count]; vertices[0] = vertice; float angledegree = 360.0f; float angleRad = Mathf.Deg2Rad * angledegree; float angleCur = angleRad; float angledelta = angleRad / Segments; VertexSpace[] vertexs = new VertexSpace[vertices_count - 1]; for (int i = 1; i < vertices_count; i++) { float cosA = Mathf.Cos(angleCur); float sinA = Mathf.Sin(angleCur); if (circle.direction == CircleDirection.X) { vertices[i] = new Vector3(vertice.x, vertice.y + Radius * cosA, vertice.z + Radius * sinA); } else if (circle.direction == CircleDirection.Y) { vertices[i] = new Vector3(vertice.x + Radius * cosA, vertice.y, vertice.z + Radius * sinA); } else if (circle.direction == CircleDirection.Z) { vertices[i] = new Vector3(vertice.x + Radius * cosA, vertice.y + Radius * sinA, vertice.z); } vertexs[i - 1] = new VertexSpace(vertices[i]); angleCur -= angledelta; } VertexSpace v1; VertexSpace v2; GeoEdge edge; for (int i = 1; i < vertices_count - 1; i++) { v1 = new VertexSpace(vertices[i]); v2 = new VertexSpace(vertices[i + 1]); edge = new GeoEdge(v1, v2, false); geometryBehaviour.AddElement(edge); } v1 = new VertexSpace(vertices[1]); v2 = new VertexSpace(vertices[vertices_count - 1]); edge = new GeoEdge(v1, v2, false); geometryBehaviour.AddElement(edge); if (circle.displayFace) { GeoFace geoFace = new GeoFace(vertexs, false, circle.faceType); geometryBehaviour.AddElement(geoFace); } }
public override void Init() { base.Init(); Name = "Triangular Pyramid"; Type = GeometryType.TriPyd; float sqrt3 = Mathf.Sqrt(3); Vector3 faceNormal = Vector3.up; VertexFace u0 = new VertexFace(-1, 0, -sqrt3 / 3, faceNormal); VertexFace u1 = new VertexFace(1, 0, -sqrt3 / 3, faceNormal); VertexFace u2 = new VertexFace(0, 0, sqrt3 * 2 / 3, faceNormal); VertexSpace u3 = new VertexSpace(0, sqrt3, 0); AddBaseVertex(u0); AddBaseVertex(u1); AddBaseVertex(u2); AddBaseVertex(u3); GeoVertex v0 = new GeoVertex(u0, true); GeoVertex v1 = new GeoVertex(u1, true); GeoVertex v2 = new GeoVertex(u2, true); GeoVertex v3 = new GeoVertex(u3, true); AddGeoVertex(v0); AddGeoVertex(v1); AddGeoVertex(v2); AddGeoVertex(v3); GeoEdge e0 = new GeoEdge(u0, u1, true); GeoEdge e1 = new GeoEdge(u0, u2, true); GeoEdge e2 = new GeoEdge(u1, u2, true); GeoEdge e3 = new GeoEdge(u0, u3, true); GeoEdge e4 = new GeoEdge(u1, u3, true); GeoEdge e5 = new GeoEdge(u2, u3, true); AddGeoEdge(e0); AddGeoEdge(e1); AddGeoEdge(e2); AddGeoEdge(e3); AddGeoEdge(e4); AddGeoEdge(e5); GeoFace f0 = new GeoFace(new VertexUnit[] { u0, u1, u2 }, true); GeoFace f1 = new GeoFace(new VertexUnit[] { u1, u0, u3 }, true); GeoFace f2 = new GeoFace(new VertexUnit[] { u0, u2, u3 }, true); GeoFace f3 = new GeoFace(new VertexUnit[] { u2, u1, u3 }, true); AddGeoFace(f0); AddGeoFace(f1); AddGeoFace(f2); AddGeoFace(f3); InitDatas(); }
public DeleteFaceOperation(GeoController geoController, Geometry geometry, GeoFace geoFace) { CanRotateCamera = true; CanActiveElement = false; this.geoController = geoController; this.geometry = geometry; this.geoFace = geoFace; }
public void SetRectangle(Vector3[] positions) { if (positions.Length != 4) { return; } Vector3 faceNormal = Vector3.right; VertexResolvedBody u0 = new VertexResolvedBody(positions[0].x, positions[0].y, positions[0].z, faceNormal); // u0.isFixed = true; VertexResolvedBody u1 = new VertexResolvedBody(positions[1].x, positions[1].y, positions[1].z, faceNormal); // u1.isFixed = true; VertexResolvedBody u2 = new VertexResolvedBody(positions[2].x, positions[2].y, positions[2].z, faceNormal); // u2.isFixed = true; VertexResolvedBody u3 = new VertexResolvedBody(positions[3].x, positions[3].y, positions[3].z, faceNormal); // u3.isFixed = true; AddBaseVertex(u0); AddBaseVertex(u1); AddBaseVertex(u2); AddBaseVertex(u3); vertexResolvedBodies = new VertexResolvedBody[] { u0, u1, u2, u3 }; GeoVertex v0 = new GeoVertex(u0, true); GeoVertex v1 = new GeoVertex(u1, true); GeoVertex v2 = new GeoVertex(u2, true); GeoVertex v3 = new GeoVertex(u3, true); AddGeoVertex(v0); AddGeoVertex(v1); AddGeoVertex(v2); AddGeoVertex(v3); GeoEdge e0 = new GeoEdge(u0, u1, true); GeoEdge e1 = new GeoEdge(u1, u2, true); GeoEdge e2 = new GeoEdge(u2, u3, true); GeoEdge e3 = new GeoEdge(u0, u3, true); AddGeoEdge(e0); AddGeoEdge(e1); AddGeoEdge(e2); AddGeoEdge(e3); GeoFace f0 = new GeoFace(new VertexUnit[] { u0, u1, u2, u3 }, true); AddGeoFace(f0); InitDatas(); NavAxisBehaviour axis = GameObject.Find("X").GetComponent <NavAxisBehaviour>(); PointerEventData data = new PointerEventData(EventSystem.current); axis.OnPointerClick(data); shapeSetted = true; }
public void ClickFace(GeoFace face) { if (currentOperation == null) { EditFaceOperation(face); } else { currentOperation.OnClickElement(face); } }
public void DeleteFaceOperation(GeoFace geoFace) { if (state != GeoState.Normal) { return; } SetState(GeoState.EditFace); currentOperation = new DeleteFaceOperation(this, geometry, geoFace); currentOperation.Start(); }
public void EditFaceOperation(GeoFace geoFace) { if (state != GeoState.Normal) { return; } SetState(GeoState.EditFace); currentOperation = new EditFaceOperation(this, geoCamera, geometry, geometryBehaviour, geoUI, geoFace); currentOperation.Start(); }
private void SpreadCone() { float Radius = circular.radius1; float height = circular.Vertices[0].y - circular.Vertices[1].y; float width = circular.Vertices[2].z - circular.Vertices[1].z; float fanRadius = Mathf.Sqrt(height * height + width * width); positionZ = fanRadius / 2; geoCamera.TriggerMoveZAnimation(270, 0, positionZ); VertexSpace u0 = new VertexSpace(circular.Vertices[0]); VertexSpace u1 = new VertexSpace(circular.Vertices[2]); VertexSpace u2 = new VertexSpace(circular.Vertices[1]); int segments = 60; float angleRad = Mathf.Deg2Rad * (360 * Radius / fanRadius); float angleCur = Mathf.Deg2Rad * (180 - Mathf.Acos(height / fanRadius) * 180 / Mathf.PI - 360 * Radius / fanRadius); float angledelta = angleRad / segments; int vertices_count = segments + 1; VertexSpace v1; VertexSpace v2; GeoFace f; Vector3[] vertices = new Vector3[vertices_count]; for (int i = 0; i < vertices_count; i++) { float cosA = Mathf.Cos(angleCur); float sinA = Mathf.Sin(angleCur); vertices[i] = new Vector3(u0.Position().x + 0, u0.Position().y + fanRadius * cosA, u0.Position().x + fanRadius * sinA); angleCur += angledelta; } VertexSpace[] vertexs = new VertexSpace[vertices_count + 1]; vertexs[0] = u0; for (int i = 0; i < vertices_count - 1; i++) { v1 = new VertexSpace(vertices[i]); v2 = new VertexSpace(vertices[i + 1]); vertexs[i + 1] = v1; vertexs[i + 2] = v2; geometryBehaviour.AddElement(new GeoEdge(v1, v2, false)); } f = new GeoFace(vertexs, false, FaceType.SpreadFan); geometryBehaviour.AddElement(f); GeoEdge e1 = new GeoEdge(u0, new VertexSpace(vertices[0]), false); GeoEdge e2 = new GeoEdge(u0, new VertexSpace(vertices[vertices_count - 1]), false); geometryBehaviour.AddElement(e1); geometryBehaviour.AddElement(e2); VertexSpace u3 = new VertexSpace(0, circular.Vertices[0].y, fanRadius + Radius); GeoCircle c2 = new GeoCircle(u3, Radius, CircleDirection.X, true, FaceType.SpreadConeCircle); geometryBehaviour.AddElement(c2); }
private Vector3 FaceNormal(GeoFace geoFace) { int id1 = geoFace.Ids[0]; int id2 = geoFace.Ids[1]; int id3 = geoFace.Ids[2]; Vector3 dir1 = UnitVector(id1) - UnitVector(id2); Vector3 dir2 = UnitVector(id1) - UnitVector(id3); Vector3 normal = Vector3.Cross(dir1, dir2).normalized; return(normal); }
public Vector3 FaceCenter(GeoFace face) { Vector3 total = Vector3.zero; int[] ids = face.Ids; foreach (int id in ids) { total += UnitVector(id); } return(total / ids.Length); }
public EditFaceOperation(GeoController geoController, GeoCamera geoCamera, Geometry geometry, GeometryBehaviour geometryBehaviour, GeoUI geoUI, GeoFace geoFace) { CanRotateCamera = false; CanActiveElement = false; this.geoController = geoController; this.geoCamera = geoCamera; this.geometry = geometry; this.geometryBehaviour = geometryBehaviour; this.activePanel = geoUI.activePanel; this.elementPanel = geoUI.elementPanel; this.geoFace = geoFace; }
private void AddFace(GeoFace geoFace) { GameObject planeObject = new GameObject(geoFace.ToString()); planeObject.transform.SetParent(faceWrapper.transform); FaceBehaviour faceBehaviour = planeObject.AddComponent <FaceBehaviour>(); faceBehaviour.Init(geoFace); faceBehaviour.SetData(geometry.Face(geoFace)); faceMap.Add(geoFace, faceBehaviour); elementMap.Add(geoFace, faceBehaviour); }
public FormElement FaceForm(GeoFace face) { int count = face.Ids.Length; string[] signs = new string[count]; for (int i = 0; i < count; i++) { signs[i] = geometry.VertexSign(face.Ids[i]); } FormElement formElement = new FormElement(count, signs); return(formElement); }
public void HoverFace(GeoFace face, bool isHover) { if (isCameraRotate) { return; } if (currentOperation != null && !currentOperation.CanActiveElement) { return; } if (isHover && face.faceType == FaceType.Normal) { FormElement formElement = FaceForm(face); geoUI.activePanel.SetFace(formElement); } else { geoUI.activePanel.Clear(); } geometryBehaviour.HighlightFace(face, isHover); }
private void SpreadCylinder() { float Radius = circular.radius1; float height = circular.Vertices[0].y - circular.Vertices[1].y; float width = 2 * Mathf.PI * Radius; positionZ = width / 2; geoCamera.TriggerMoveZAnimation(270, 0, positionZ); VertexSpace u0 = new VertexSpace(0, height / 2, Radius); VertexSpace u1 = new VertexSpace(0, -height / 2, Radius); VertexSpace u2 = new VertexSpace(0, -height / 2, Radius + width); VertexSpace u3 = new VertexSpace(0, height / 2, Radius + width); GeoEdge e0 = new GeoEdge(u0, u1, false); GeoEdge e1 = new GeoEdge(u1, u2, false); GeoEdge e2 = new GeoEdge(u2, u3, false); GeoEdge e3 = new GeoEdge(u0, u3, false); geometryBehaviour.AddElement(e0); geometryBehaviour.AddElement(e1); geometryBehaviour.AddElement(e2); geometryBehaviour.AddElement(e3); GeoFace f = new GeoFace(new VertexSpace[] { u0, u1, u2, u3 }, false, FaceType.SpreadRectangle); geometryBehaviour.AddElement(f); VertexSpace u4 = new VertexSpace(0, height / 2 + Radius, width / 2 + Radius); GeoCircle c1 = new GeoCircle(u4, Radius, CircleDirection.X, true, FaceType.SpreadCylinderCircle); geometryBehaviour.AddElement(c1); VertexSpace u5 = new VertexSpace(0, -height / 2 - Radius, width / 2 + Radius); GeoCircle c2 = new GeoCircle(u5, Radius, CircleDirection.X, true, FaceType.SpreadCylinderCircle); geometryBehaviour.AddElement(c2); }
public void ChangeFaceColorIndex(GeoFace geoface, int colorindex) { geometry.SetElementColor(geoface, colorindex); geometryBehaviour.GeometryElementColorChange(geoface, colorindex); }
public void AddGeoFace(GeoFace face) { geoFaces.Add(face); face.AddObserveElements(); }
public void RemoveGeoFace(GeoFace face) { geoFaces.Remove(face); face.RemoveObserveElements(); }
public void HighlightFace(GeoFace geoFace, bool highlight) { faceMap[geoFace].SetHighlight(highlight); }
public Face Face(GeoFace face) { return(face.Face()); }
private void UpdateFace(GeoFace geoFace) { FaceBehaviour faceBehaviour = faceMap[geoFace]; faceBehaviour.SetData(geometry.Face(geoFace)); }
private void AddState(Auxiliary auxiliary, FormInput form) { Type type = Type.GetType(tool.Name + "AuxiliaryState"); if (type != null) { AuxiliaryState auxiliaryState = (AuxiliaryState)Activator.CreateInstance(type, tool, auxiliary, geometry); auxiliaryState.OnClickDelete = () => geoController.RemoveAuxiliaryOperation(auxiliary); //state单击 auxiliaryState.DoubleClick = () => this.TurnToFront(auxiliary, form); //Action OnElementHighLight 0925 Requirement_1 auxiliaryState.OnElementHighlight = () => { //Hightlight face ChangeFaceColorIndex((GeoFace)auxiliary.elements[0], 1); //Hide coordinate geoUI.navPanel.OnCoordinateButtonClick(1); geoUI.navPanel.SetCoordinateButtonStatus(1); //Change Button status //Hide grid geoUI.navPanel.OnGridButtonClick(1); geoUI.navPanel.SetGridButtonStatus(1); //Measure Line length if (auxiliary.elements[0] is GeoFace) { GeoFace geoFace = (GeoFace)auxiliary.elements[0]; for (int i = 0; i < geoFace.Ids.Length; i++) { int vertex1 = i; int vertex2 = (i + 1) % geoFace.Ids.Length; Measure measure = new LineLengthMeasure(geoFace.Ids[vertex1], geoFace.Ids[vertex2]); measure_list.Add((Measure)measure); measure.InitWithGeometry(geometry); bool result = geometry.Implement.AddMeasure(measure); if (result) { List <ToolGroup> toolGroups = geoUI.toolPanel.ToolGroups(); Tool lineLengthMeasureTool = toolGroups[3].Tools[0]; AddState_Measure(measure, lineLengthMeasureTool); Gizmo[] gizmos = measure.gizmos; if (gizmos != null) { foreach (Gizmo gizmo in gizmos) { geometry.AddGizmo(gizmo); geometryBehaviour.AddGizmo(gizmo); } } } else { // TODO } } } //Measure CornerAngle if (auxiliary.elements[0] is GeoFace) { GeoFace geoFace = (GeoFace)auxiliary.elements[0]; for (int i = 0; i < geoFace.Ids.Length; i++) { int vertex1 = i; int vertex2 = (i + 1) % geoFace.Ids.Length; int vertex3 = (i + 2) % geoFace.Ids.Length; Measure measure = new CornerAngleMeasure(geoFace.Ids[vertex1], geoFace.Ids[vertex2], geoFace.Ids[vertex3]); measure_list.Add((Measure)measure); measure.InitWithGeometry(geometry); bool result = geometry.Implement.AddMeasure(measure); if (result) { List <ToolGroup> toolGroups = geoUI.toolPanel.ToolGroups(); Tool cornerAngleMeasureTool = toolGroups[3].Tools[1]; AddState_Measure(measure, cornerAngleMeasureTool); Gizmo[] gizmos = measure.gizmos; if (gizmos != null) { foreach (Gizmo gizmo in gizmos) { geometry.AddGizmo(gizmo); geometryBehaviour.AddGizmo(gizmo); } } } else { // TODO } } } //Measure Plane Area if (auxiliary.elements[0] is GeoFace) { GeoFace geoFace = (GeoFace)auxiliary.elements[0]; //Debug.Log(geoFace.Ids); Measure measure = new PlaneAreaMeasure(geoFace.Ids); measure_list.Add(measure); measure.InitWithGeometry(geometry); bool result = geometry.Implement.AddMeasure(measure); if (result) { List <ToolGroup> toolGroups = geoUI.toolPanel.ToolGroups(); Tool planeAreaMeasureTool = toolGroups[3].Tools[2]; AddState_Measure(measure, planeAreaMeasureTool); Gizmo[] gizmos = measure.gizmos; if (gizmos != null) { foreach (Gizmo gizmo in gizmos) { geometry.AddGizmo(gizmo); geometryBehaviour.AddGizmo(gizmo); } } } else { // TODO } } // Hide elements beyond the Highlighted face GeoVertex[] geoVertices = geometry.GeoVertices(); if (auxiliary.elements[0] is GeoFace) { GeoFace geoFace = (GeoFace)auxiliary.elements[0]; VertexUnit[] faceVertices = geoFace.get_vertices(); Vector3 side1 = faceVertices[0].Position() - faceVertices[1].Position(); Vector3 side2 = faceVertices[2].Position() - faceVertices[1].Position(); Vector3 normalVector = Vector3.Cross(side1, side2); if (normalVector.x < 0) { normalVector.x = -normalVector.x; normalVector.y = -normalVector.y; normalVector.z = -normalVector.z; } if (normalVector.x == 0) { if (normalVector.z < 0) { normalVector.y = -normalVector.y; normalVector.z = -normalVector.z; } } Vector3 anchor = faceVertices[1].Position() + normalVector * 2; float min = 1000; GeoEdge[] edges = geometry.GeoEdges(); foreach (VertexUnit vertexUnit in geoFace.get_vertices()) { float face_vertex_distance = Vector3.Distance(vertexUnit.Position(), anchor); if (face_vertex_distance < min) { min = face_vertex_distance; } } foreach (GeoVertex geoVertex in geoVertices) { float distance = Vector3.Distance(geoVertex.VertexUnit().Position(), anchor); if (distance < min) { //隐藏该顶点 ElementBehaviour vertexElementBehaviour = geometryBehaviour.elementMap[geoVertex]; vertexElementBehaviour.SetVisible(false); elementBehaviour_list.Add(vertexElementBehaviour); //隐藏该顶点起始的所有边 foreach (GeoEdge geoEdge in edges) { if (geoVertex.Id == geoEdge.Id1 || geoVertex.Id == geoEdge.Id2) { ElementBehaviour edgeElementBehaviour = geometryBehaviour.elementMap[geoEdge]; edgeElementBehaviour.SetVisible(false); elementBehaviour_list.Add(edgeElementBehaviour); } } } } } }; auxiliaryState.UndoFaceHighlight = () => { //Undo Hightlight face ChangeFaceColorIndex((GeoFace)auxiliary.elements[0], 0); //Undo Hide coordinate geoUI.navPanel.OnCoordinateButtonClick(0); geoUI.navPanel.SetCoordinateButtonStatus(0); //Change Button status //Hide grid geoUI.navPanel.OnGridButtonClick(0); geoUI.navPanel.SetGridButtonStatus(0); //Claer All Face_MeasureStates foreach (Measure measure in measure_list) { geoController.RemoveMeasure(measure); } foreach (ElementBehaviour elementBehaviour in elementBehaviour_list) { elementBehaviour.SetVisible(true); } }; stateController.AddAuxiliaryState(auxiliaryState); } }