private void GrabInteractedObject() { if (controllerAttachJoint == null && grabbedObject == null && IsObjectGrabbable(interactTouch.GetTouchedObject())) { InitGrabbedObject(); SnapObjectToGrabToController(grabbedObject); } }
/* protected virtual void ToggleControllerVisibility(bool visible) * { * if (grabbedObject != null) * { * ///[Obsolete] #pragma warning disable 0618 * VRTK_InteractControllerAppearance[] controllerAppearanceScript = grabbedObject.GetComponentsInParent<VRTK_InteractControllerAppearance>(true); #pragma warning restore 0618 * if (controllerAppearanceScript.Length > 0) * { * controllerAppearanceScript[0].ToggleControllerOnGrab(visible, controllerReference.model, grabbedObject); * } * } * else if (visible) * { * VRTK_ObjectAppearance.SetRendererVisible(controllerReference.model, grabbedObject); * } * } */ protected virtual void InitUsedObject() { usedObject = (interactTongTouch != null ? interactTongTouch.GetTouchedObject() : null); if (usedObject != null) { OnControllerStartUseInteractableObject(interactTongTouch.SetControllerInteractEvent(usedObject)); VRTK_InteractableObject usedObjectScript = usedObject.GetComponent <VRTK_InteractableObject>(); ChooseUseSequence(usedObjectScript); // ToggleControllerVisibility(false); OnControllerUseInteractableObject(interactTongTouch.SetControllerInteractEvent(usedObject)); } }
// Update is called once per frame void Update() { if (controller.GetTouchedObject()) { if (controller.GetTouchedObject().tag == "box") { ControllerTouching(controllerTag); } } else { ControllerNotTouching(controllerTag); } }
void Update() { if (checkingForRelease) { currentReleaseDifference += Time.deltaTime; if (currentReleaseDifference > releaseTolerance) { checkingForRelease = false; canShoot = false; currentReleaseDifference = 0; Destroy(currentOrb); currentOrb = null; } else if (!rightHand.triggerPressed && !leftHand.triggerPressed) { canShoot = true; checkingForRelease = false; } } else if (canShoot) { // Try to shoot Vector3 leftHandVelocity = VRTK_DeviceFinder.GetControllerVelocity(VRTK_ControllerReference.GetControllerReference(leftHand.gameObject)); Vector3 rightHandVelocity = VRTK_DeviceFinder.GetControllerVelocity(VRTK_ControllerReference.GetControllerReference(rightHand.gameObject)); Vector3 averageVelocity = (leftHandVelocity + rightHandVelocity) / 2; if (Vector3.Angle(rightHandVelocity, leftHandVelocity) < 90 && averageVelocity.magnitude >= shootTolerance) { currentOrb.GetComponent <Rigidbody>().isKinematic = false; currentOrb.GetComponent <Rigidbody>().velocity = averageVelocity * shootMultiplier; Destroy(currentOrb, 5); } else { Destroy(currentOrb); } currentOrb = null; canShoot = false; } else if (!leftHandTouch.GetTouchedObject() && !rightHandTouch.GetTouchedObject()) { if (leftHand.triggerPressed && rightHand.triggerPressed) { if (!currentOrb) { currentOrb = Instantiate(magicOrbPrefab, Vector3.Lerp(leftHand.transform.position, rightHand.transform.position, 0.5f), Quaternion.identity); } else { currentOrb.transform.position = Vector3.Lerp(leftHand.transform.position, rightHand.transform.position, 0.5f); } } } }
private GameObject GetGrabbableObject() { GameObject obj = interactTouch.GetTouchedObject(); if (obj != null && interactTouch.IsObjectInteractable(obj)) { return(obj); } return(null); //return grabbedObject; }
private void DoStartUseObject(object sender, ControllerClickedEventArgs e) { GameObject touchedObject = interactTouch.GetTouchedObject(); if (touchedObject != null && interactTouch.IsObjectInteractable(touchedObject)) { UseInteractedObject(touchedObject); if (!IsObjectHoldOnUse(usingObject)) { SetObjectUsingState(usingObject, GetObjectUsingState(usingObject) + 1); } } }
public void TryAutoGrab() { if (gs.autoGrab) { if (interactTouch.GetTouchedObject() == null) { Block block = BlockManager.AutoGrabBlock(); block.transform.SetPositionAndRotation(transform.position, transform.rotation); interactTouch.ForceTouch(block.gameObject); interactGrab.AttemptGrab(); } } }
void doTouch() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } touchedObject.Value = touch.GetTouchedObject(); if (touchedObject.Value == null) { isTouching.Value = false; isInteractable.Value = false; } else { isTouching.Value = true; isInteractable.Value = touch.IsObjectInteractable(touchedObject.Value); } }
public static int GetViewIDOfTouchedObject(VRTK_InteractTouch interactTouch) { return(interactTouch.GetTouchedObject().GetPhotonView().ViewID); }
// Update is called once per frame void Update() { if (isLocalPlayer) { GameObject leftObjectGrab = leftInteractGrab.GetGrabbedObject(); GameObject rightObjectGrab = rightInteractGrab.GetGrabbedObject(); GameObject leftObjectTouch = leftTouch.GetTouchedObject(); GameObject rightObjectTouch = rightTouch.GetTouchedObject(); //TOUCH EVENTS if (leftObjectTouch != null && isTouchLeft == false && leftObjectGrab == null) { isTouchLeft = true; curLeftObjTouch = leftObjectTouch; Debug.Log("Left Controller Touch : " + leftObjectTouch); CmdTouchGameObject(curLeftObjTouch); } if ((leftObjectTouch != curLeftObjTouch && isTouchLeft == true) || (isTouchLeft == true && leftObjectGrab != null)) { isTouchLeft = false; Debug.Log("Left Controller Untouch : " + leftObjectTouch); CmdUntouchGameObject(curLeftObjTouch); curLeftObjTouch = null; } if (rightObjectTouch != null && isTouchRight == false && rightObjectGrab == null) { isTouchRight = true; curRightObjTouch = rightObjectTouch; Debug.Log("right Controller Touch : " + rightObjectTouch); CmdTouchGameObject(curRightObjTouch); } if ((rightObjectTouch != curRightObjTouch && isTouchRight == true) || (isTouchRight == true && rightObjectGrab != null)) { isTouchRight = false; Debug.Log("right Controller Untouch : " + curRightObjTouch); CmdUntouchGameObject(curRightObjTouch); curRightObjTouch = null; } //GRAB EVENTS if (leftObjectGrab != null && isGrabLeft == false) { isGrabLeft = true; curLeftObjGrab = leftObjectGrab; CmdGrabGameObject(curLeftObjGrab, 0); } else if (leftObjectGrab == null && isGrabLeft == true) { isGrabLeft = false; CmdUngrabGameObject(curLeftObjGrab, 0); curLeftObjGrab = null; } if (rightObjectGrab != null && isGrabRight == false) { isGrabRight = true; curRightObjGrab = rightObjectGrab; CmdGrabGameObject(curRightObjGrab, 1); } else if (rightObjectGrab == null && isGrabRight == true) { isGrabRight = false; CmdUngrabGameObject(curRightObjGrab, 1); curRightObjGrab = null; } } }
private void InitGestureEvent() { //********************************************************************************* //possitive event pointer.ActivationButtonPressed += (sender, e) => { if (interactTouch.GetTouchedObject() == null) { //TransitToPointerGesture(); TransitToGestureByHandGestureType(EnumHandGestureType.Point); } }; pointer.ActivationButtonReleased += (sender, e) => { if (interactTouch.GetTouchedObject() == null) { //TransitToIdleGesture(); TransitToGestureByHandGestureType(EnumHandGestureType.Idle); } }; interactGrab.GrabButtonPressed += (sender, e) => { if (interactTouch.GetTouchedObject() == null) { TransitToGestureByHandGestureType(EnumHandGestureType.Grasp); //TransitToGraspGesture(); } }; interactGrab.GrabButtonReleased += (sender, e) => { if (interactTouch.GetTouchedObject() == null) { TransitToGestureByHandGestureType(EnumHandGestureType.Idle); //TransitToIdleGesture(); } }; //********************************************************************************** //passive event interactTouch.ControllerTouchInteractableObject += (sender, e) => { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftTouchGesture != null) { objectWithGesture.ToggleTouchGesture(handType, true); ToggleHandModelActive(false); } else { if (interactGrab.GetGrabbedObject() == null) { TransitToGestureByHandGestureType(objectWithGesture.m_defaulttouchGesture); } } } else { //NO VRTK_BasicGestureObject if (interactGrab.GetGrabbedObject() == null) { //TransitToGestureByHandGestureType(EnumHandGestureType.Stretch); } } }; interactTouch.ControllerUntouchInteractableObject += (sender, e) => { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftTouchGesture != null) { objectWithGesture.ToggleTouchGesture(handType, false); ToggleHandModelActive(true); } else { if (interactGrab.GetGrabbedObject() == null) { //TransitToIdleGestureLater(); TransitToGestureByHandGestureType(EnumHandGestureType.Idle);//********************* } } } else { //NO VRTK_BasicGestureObject if (interactGrab.GetGrabbedObject() == null) { //TransitToIdleGesture(); TransitToIdleGestureLater(); } } /* * foreach (Collider coll in GetComponentsInChildren<Collider>() ) { * coll.isTrigger = true; * } */ }; interactGrab.ControllerGrabInteractableObject += (sender, e) => { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftGrabGesture != null) { if (objectWithGesture.LeftTouchGesture != null) { objectWithGesture.ToggleTouchGesture(handType, false); } objectWithGesture.ToggleGrabGesture(handType, true); ToggleHandModelActive(false); } else { TransitToGestureByHandGestureType(objectWithGesture.m_defaultGrabGesture); } } else { //NO VRTK_BasicGestureObject //TransitToGraspGesture(); TransitToGestureByHandGestureType(EnumHandGestureType.Grasp); } }; interactGrab.ControllerUngrabInteractableObject += (sender, e) => { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftGrabGesture != null) { objectWithGesture.ToggleGrabGesture(handType, false); if (objectWithGesture.LeftTouchGesture != null) { objectWithGesture.ToggleTouchGesture(handType, true); } else { ToggleHandModelActive(true); } } else { TransitToGestureByHandGestureType(EnumHandGestureType.Idle); } } else { //NO VRTK_BasicGestureObject // TransitToIdleGesture(); TransitToGestureByHandGestureType(EnumHandGestureType.Idle); } }; interactUsed.ControllerUseInteractableObject += (sender, e) => { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftUseGesture != null) { if (objectWithGesture.LeftGrabGesture != null) { objectWithGesture.ToggleGrabGesture(handType, false); } objectWithGesture.ToggleUseGesture(handType, true); ToggleHandModelActive(false); } else { TransitToGestureByHandGestureType(objectWithGesture.m_defaultUseGesture); } } else { //NO VRTK_BasicGestureObject //TransitToPullTriggerGresture(); TransitToGestureByHandGestureType(EnumHandGestureType.PullTrigger); } }; interactUsed.ControllerUnuseInteractableObject += (sender, e) => { try { VRTK_BasicGestureObject objectWithGesture = ((ObjectInteractEventArgs)e).target.GetComponent <VRTK_BasicGestureObject>(); if (objectWithGesture) { if (objectWithGesture.LeftUseGesture != null) { objectWithGesture.ToggleUseGesture(handType, false); if (objectWithGesture.LeftGrabGesture != null) { objectWithGesture.ToggleGrabGesture(handType, true); } else { ToggleHandModelActive(true); } } else { TransitToGestureByHandGestureType(objectWithGesture.m_defaultGrabGesture); } } else { //NO VRTK_BasicGestureObject //TransitToGraspGesture(); TransitToGestureByHandGestureType(EnumHandGestureType.Grasp); } } catch (NullReferenceException e1) { print(e1.Message); } }; }