예제 #1
0
    private void Click_Edit(Hand g_hand)
    {
        if (myHoldingHand == null)
        {
            //grab

            Debug.Log("player clicked on me!");

            if (isUseSnapping)
            {
                myReference = CS_VR_ReferenceManager.Instance.GetIdleReference();
            }

            if (g_hand.currentAttachedObject != null)
            {
                g_hand.DetachObject(g_hand.currentAttachedObject);
            }

            Quaternion t_lastRotation = this.transform.rotation;
            Vector3    t_lastPosition = this.transform.position;

            g_hand.AttachObject(this.gameObject);

            this.transform.rotation = t_lastRotation;
            this.transform.position = t_lastPosition;

            myHoldingHand = g_hand;

            if (myAnyLevelObjectScript != null)
            {
                myAnyLevelObjectScript.enabled = false;
            }

            myHoldingHand.HoverLock(null);
        }
        else
        {
            //scale

            if (myHoldingHand.otherHand != null &&
                (myHoldingHand.otherHand.currentAttachedObject == null ||
                 myHoldingHand.otherHand.currentAttachedObject.GetComponent <CS_AnyLevelObject> () == null) &&
                myHoldingHand.otherHand.GetStandardInteractionButtonDown())
            {
                myScalingHand = myHoldingHand.otherHand;

                myRenderer.material = myDefaultMaterial;

                // create scaling
                onScale = true;
                Debug.Log("true" + myScalingHand.currentAttachedObject);

                myScaling_InitHandDistance = CS_VR_Global.LocalVector3(myScalingHand.transform.position - myHoldingHand.transform.position, this.transform);

                myScaling_Default = this.transform.localScale;

                myScalingHand.HoverLock(null);
            }
        }
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        if (onScale)
        {
            if (myHoldingHand == null ||
                myScalingHand == null ||
                (myScalingHand.currentAttachedObject != null &&
                 myScalingHand.currentAttachedObject.GetComponent <CS_AnyLevelObject>() != null) ||
                myScalingHand.GetStandardInteractionButton() == false)
            {
                onScale = false;
                Debug.Log("false");
                myScalingHand.HoverUnlock(null);

                //SnapScale (this.transform);

                return;
            }

            Vector3 t_handDistance = CS_VR_Global.LocalVector3(myScalingHand.transform.position - myHoldingHand.transform.position, this.transform);

            Vector3 t_scale = Vector3.one;
            if (isFreeScale)
            {
                Vector3 t_deltaPos = t_handDistance - myScaling_InitHandDistance;
                t_scale = new Vector3(
                    Mathf.Abs(myScaling_Default.x + t_deltaPos.x),
                    Mathf.Abs(myScaling_Default.y + t_deltaPos.y),
                    Mathf.Abs(myScaling_Default.z + t_deltaPos.z)
                    );
            }
            else
            {
                t_scale = myScaling_Default + Vector3.one * (t_handDistance.magnitude - myScaling_InitHandDistance.magnitude);
                t_scale = new Vector3(
                    Mathf.Abs(t_scale.x),
                    Mathf.Abs(t_scale.y),
                    Mathf.Abs(t_scale.z)
                    );
            }

            this.transform.localScale = t_scale;
        }
    }