Beispiel #1
0
    private void Update()
    {
        if (!useController && leapServiceProvider.CurrentFrame.Hands.Count > 0)
        {
            if (primaryHand.mainRenderModel)
            {
                primaryHand.mainRenderModel.gameObject.SetActive(false);
            }
            primaryHand.hoverSphereTransform.position = leapServiceProvider.CurrentFrame.Hands[0].PalmPosition.ToVector3();
            primaryHand.hoverSphereTransform.rotation = leapServiceProvider.CurrentFrame.Hands[0].Rotation.ToQuaternion();
            if (leapServiceProvider.CurrentFrame.Hands[0].GrabStrength > 0.9f)
            {
                if (!isGrabbing)
                {
                    grabbedThisFrame = true;
                    isGrabbing       = true;
                }
            }
            else
            {
                isGrabbing = false;
            }


            if (grabbedThisFrame && grabbedObject == null)
            {
                if (primaryHand.hoveringInteractable != null)
                {
                    Takeable toGrab = primaryHand.hoveringInteractable.GetComponent <Takeable>();
                    if (toGrab != null)
                    {
                        toGrab.takeObject(primaryHand);
                        if (!TaskController.Instance.IsSelectionTask())
                        {
                            grabbedObject  = toGrab;
                            originalParent = grabbedObject.transform.parent;
                            grabbedObject.transform.SetParent(primaryHand.hoverSphereTransform);
                        }
                    }
                }
                else
                {
                    TaskController.Instance.ObjectSelected(null, null, primaryHand);
                }
            }
            else if (!isGrabbing)
            {
                if (grabbedObject != null)
                {
                    grabbedObject.transform.SetParent(originalParent);
                    grabbedObject.ReleaseObject();
                    grabbedObject = null;
                }
            }
        }
        grabbedThisFrame = false;
    }
Beispiel #2
0
 public override void ReleaseObject()
 {
     if (grabbedObject)
     {
         grabbedObject.ReleaseObject();
     }
     renderedRay.gameObject.SetActive(true);
     grabbedObject = null;
 }
Beispiel #3
0
    public override void ReleaseObject()
    {
        if (!grabbedObject)
        {
            return;
        }

        grabbedObject.transform.SetParent(originalParent);
        grabbedObject.ReleaseObject();
        grabbedObject = null;
    }
Beispiel #4
0
    public override void ReleaseObject()
    {
        if (grabbedObject)
        {
            grabbedObject.transform.SetParent(originalParent);
            grabbedObject.ReleaseObject();
            grabbedObject = null;
        }

        center.transform.localScale = Vector3.one;
    }
Beispiel #5
0
 /// <summary>
 /// Releases the current objects and resets the technique if necessary.
 /// </summary>
 public override void ReleaseObject()
 {
     grabActive   = false;
     grabDisabled = false;
     rotationLever.gameObject.SetActive(false);
     translationLever.gameObject.SetActive(false);
     barMaterial.SetMainColorAlpha(0.5f);
     if (currentTakeable != null)
     {
         currentTakeable.ReleaseObject();
         currentTakeable   = null;
         lastHandPositions = new List <Vector3>();
         if (rotationMode)
         {
             lastFullGrabTime = 0f;
         }
         rotationMode = false;
     }
     else
     {
         lastFullGrabTime = 0f;
     }
 }