Mercurial > hg > Game > Games
diff Orchestland/Assets/LeapMotion/Scripts/Utils/GrabbableObject.cs @ 3:0030a1b971fb default tip
merge
author | Yuta ANSE <e135745@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:23:43 +0900 |
parents | f7675884f2a1 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orchestland/Assets/LeapMotion/Scripts/Utils/GrabbableObject.cs Fri Jul 17 23:23:43 2015 +0900 @@ -0,0 +1,66 @@ +/******************************************************************************\ +* Copyright (C) Leap Motion, Inc. 2011-2014. * +* Leap Motion proprietary. Licensed under Apache 2.0 * +* Available at http://www.apache.org/licenses/LICENSE-2.0.html * +\******************************************************************************/ + +using UnityEngine; +using System.Collections; + +public class GrabbableObject : MonoBehaviour { + + public bool useAxisAlignment = false; + public Vector3 rightHandAxis; + public Vector3 objectAxis; + + public bool rotateQuickly = true; + public bool centerGrabbedObject = false; + + public Rigidbody breakableJoint; + public float breakForce; + public float breakTorque; + + protected bool grabbed_ = false; + protected bool hovered_ = false; + + public bool IsHovered() { + return hovered_; + } + + public bool IsGrabbed() { + return grabbed_; + } + + public virtual void OnStartHover() { + hovered_ = true; + } + + public virtual void OnStopHover() { + hovered_ = false; + } + + public virtual void OnGrab() { + grabbed_ = true; + hovered_ = false; + + if (breakableJoint != null) { + Joint breakJoint = breakableJoint.GetComponent<Joint>(); + if (breakJoint != null) { + breakJoint.breakForce = breakForce; + breakJoint.breakTorque = breakTorque; + } + } + } + + public virtual void OnRelease() { + grabbed_ = false; + + if (breakableJoint != null) { + Joint breakJoint = breakableJoint.GetComponent<Joint>(); + if (breakJoint != null) { + breakJoint.breakForce = Mathf.Infinity; + breakJoint.breakTorque = Mathf.Infinity; + } + } + } +}