//Rotate functionality to invoke rotation from button, -90 degrees public void RoateCounterClockWise() { if (SelectObject.SelectedObjects.Count == 1) { foreach (GameObject objectSelected in SelectObject.SelectedObjects) { Vector3 curentPos = objectSelected.transform.position; objectSelected.transform.Rotate(new Vector3(0, 0, +90)); Vector3 finalPos = objectSelected.transform.position; List <float> properties = new List <float>(); properties.Add(objectSelected.GetComponent <GUICircuitComponent>().GetId()); properties.Add(curentPos[0] - finalPos[0]); properties.Add(curentPos[1] - finalPos[1]); properties.Add(-90); PosChange change = new PosChange(); change.SetChange(properties); UndoAction undoAction = new UndoAction(); undoAction.AddChange(change); GUICircuitComponent.globalUndoList.AddUndo(undoAction); } //transform position of each lines in scene Line.TransformLines(); } }
public void RotateMultiObjectClockWise() { Vector3 point = CalculateCenterPoint(); if (SelectObject.SelectedObjects.Count > 1) { UndoAction undoAction = new UndoAction(); foreach (GameObject objectSelected in SelectObject.SelectedObjects) { Vector3 curentPos = objectSelected.transform.position; objectSelected.transform.RotateAround(point, new Vector3(0, 0, 1), -90); Vector3 finalPos = objectSelected.transform.position; finalPos *= 2; finalPos = new Vector3(Mathf.Round(finalPos.x), Mathf.Round(finalPos.y)); finalPos /= 2; objectSelected.transform.position = finalPos; List <float> properties = new List <float>(); properties.Add(objectSelected.GetComponent <GUICircuitComponent>().GetId()); properties.Add(0); properties.Add(0); properties.Add(+90); properties.Add(0); PosChange change = new PosChange(); change.SetChange(properties); change.SetPoint(point); undoAction.AddChange(change); } GUICircuitComponent.globalUndoList.AddUndo(undoAction); //checking colision GameObject.Find("" + "Canvas" + "").GetComponent <Draggable>().Colision(); //transform position of each lines in scene Line.TransformLines(); } }
public void OnEndDrag(PointerEventData eventData) { if (eventData.button != PointerEventData.InputButton.Left) { return; } if (_draggingItem != null) { dragging = false; // Snapping by 0.5f. Vector3 finalPos = _draggingItem.transform.position; finalPos *= 2; finalPos = new Vector3(Mathf.Round(finalPos.x), Mathf.Round(finalPos.y)); finalPos /= 2; _draggingItem.transform.position = finalPos; _draggingItem.transform.position = new Vector3(_draggingItem.transform.position.x, _draggingItem.transform.position.y, -6); if (tbitem == false) { List <float> properties = new List <float>(); properties.Add(_draggingItem.GetComponent <GUICircuitComponent>().GetId()); properties.Add(curentPos[0][0] - finalPos[0]); properties.Add(curentPos[0][1] - finalPos[1]); PosChange change = new PosChange(); change.SetChange(properties); UndoAction undoAction = new UndoAction(); undoAction.AddChange(change); GUICircuitComponent.globalUndoList.AddUndo(undoAction); } else { GUICircuitComponent.globalUndoList.undoList.First.Value.changes[GUICircuitComponent.globalUndoList.undoList.Last.Value.changes.Count - 1].position = finalPos; } curentPos.Clear(); tbitem = false; //checking colision Colision(); _draggingItem.transform.position = new Vector3(_draggingItem.transform.position.x, _draggingItem.transform.position.y, -6); _draggingItem = null; } else if (SelectObject.SelectedObjects.Count > 1) { dragging = false; int i = 0; UndoAction undoAction = new UndoAction(); foreach (GameObject objectSelected in SelectObject.SelectedObjects) { Vector3 finalPos = objectSelected.transform.position; finalPos *= 2; finalPos = new Vector3(Mathf.Round(finalPos.x), Mathf.Round(finalPos.y)); finalPos /= 2; objectSelected.transform.position = finalPos; List <float> properties = new List <float>(); properties.Add(objectSelected.GetComponent <GUICircuitComponent>().GetId()); properties.Add(curentPos[i][0] - finalPos[0]); properties.Add(curentPos[i][1] - finalPos[1]); PosChange change = new PosChange(); change.SetChange(properties); undoAction.AddChange(change); i++; //checking colision Colision(); } GUICircuitComponent.globalUndoList.AddUndo(undoAction); curentPos.Clear(); } _itemPoss.Clear(); //transform position of each lines in scene Line.TransformLines(); if (_arrow != null) { dragging = false; _arrow.transform.position = new Vector3(_arrow.transform.position.x, _arrow.transform.position.y, -6); _connectorPotentiometer.transform.position = new Vector3(_connectorPotentiometer.transform.position.x, _connectorPotentiometer.transform.position.y, 0); _connectorPotentiometer = null; _arrow = null; } }