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); } } }
// 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; } }