// Update is called once per frame void Update() { if (!assigningActions) { placedThisFrame = false; // Mouse world position assigning per frame mWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (grabbedObject != null) // if we have a grabbed object { if (!grabbedObject.GetComponent <ShipPart>().snapped) { grabbedObject.transform.position = new Vector3(mWorldPos.x, mWorldPos.y, grabbedObject.transform.position.z) + new Vector3(grabOffset.x, grabOffset.y, 0); // if you click when an object is not snapped to a surface, leave it floating their if (Input.GetMouseButtonDown(0) && !grabbedThisFrame) { if (!grabbedObject.GetComponent <ShipPart>().startingPart) { grabbedObject.transform.parent = Camera.main.transform; floatingObjects.Add(grabbedObject); } grabbedObject = null; placedThisFrame = true; } } else // if the object has been snapped into place keep it there; { Vector3 worldPos = grabbedObject.transform.position; float dist = Vector2.Distance(((Vector2)worldPos), (Vector2)mWorldPos); if (dist > snapRadius * 6) // if mouse gets far enough away, unsnap { grabbedObject.GetComponent <ShipPart>().snapped = false; grabbedObject.transform.eulerAngles = new Vector3(grabbedObject.transform.eulerAngles.x, grabbedObject.transform.eulerAngles.y, storedAngle); grabbedObject.transform.parent = null; //grabbedObject.GetComponent<ShipPart>().Disconnect(); } if (Input.GetMouseButtonDown(0)) { if (grabbedObject.GetComponent <ShipPart>().snapped) // if the piece is snapped and you click again, connect the points { grabbedObject.GetComponent <ShipPart>().SetOnShip(true); connectedSP1.connected = true; connectedSP2.connected = true; connectedSP2.connectedToParent = true; placedThisFrame = true; grabbedObject = null; } } } if (Input.GetMouseButtonDown(1) && !grabbedObject.GetComponent <ShipPart>().snapped) { grabbedObject.transform.eulerAngles -= new Vector3(0, 0, 90); } } grabbedThisFrame = false; } else { if (assigningAction != null && assigningActionNum != 0) { if (detectPressedKeyOrButton() != KeyCode.Delete) { assigningAction.AssignAction(assigningActionNum, detectPressedKeyOrButton()); assigningAction = null; assigningActionNum = 0; } } } }