Example #1
0
    private void Grab()
    {
        if (Input.GetButtonDown(m_Input.GetGrab()))         //For the love of god, refactor this
        {
            if (!m_PlayerState.IsHoldingObject)
            {
                m_ClosestObject = GetClosestObjectWithTag("ThrowableObject", 0.5f);

                if (m_ClosestObject != null)
                {
                    Scr_ThrowableObject throwable = m_ClosestObject.GetComponent <Scr_ThrowableObject>();
                    if (!throwable.IsHeld())
                    {
                        Debug.Log("Grabbed an object");
                        m_ClosestObject.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;
                        m_ClosestObject.GetComponent <Rigidbody>().useGravity  = false;
                        m_ClosestObject.transform.parent           = transform;
                        m_ClosestObject.transform.forward          = transform.forward;
                        m_ClosestObject.transform.localPosition    = throwable.GetHoldPosition();
                        m_ClosestObject.transform.localEulerAngles = throwable.GetHoldRotation();
                        m_PlayerState.IsHoldingObject = true;
                        throwable.SetHold(true);

                        m_AnimationController.Animate("IsHoldingItem", true);
                    }
                    else
                    {
                        m_ClosestObject = null;
                    }
                }
            }
        }
    }