Example #1
0
    // 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;
                }
            }
        }
    }