public void OnTriggerEnter(Collider other) { try { if (other.gameObject.layer == GIZMO_LAYER && !BLACKLIST.Contains(other.name) && HasFocus()) { VRLog.Debug("Enter {0}", other.name); if (!_Dragging) { if (_Rumble != null) { _Rumble.Close(); } _Rumble = new RumbleSession(500, 100); _Controller.StartRumble(_Rumble); _Manager = (_GuideDriveManager.GetValue(other.GetComponent <GuideDrive>()) as GuideDriveManager); _HoverObject = other.gameObject; _Hover = true; } } if (other.gameObject == _HoverObject) { _Hover = true; } } catch (Exception e) { Logger.Error(e); } }
protected override void OnFixedUpdate() { base.OnFixedUpdate(); if (Tracking.isValid) { var device = Controller; if (device.GetPressDown(EVRButtonId.k_EButton_SteamVR_Trigger)) { _HoverObject = FindNearestHandle(); if (!_HoverObject) { return; } _Manager = (_GuideDriveManager.GetValue(_HoverObject.GetComponent <GuideDrive>()) as GuideDriveManager); _PrevPos = transform.position; _PrevRot = transform.rotation; _Dragging = true; Owner.StartRumble(_Rumble); } if (_HoverObject) { if (device.GetPress(EVRButtonId.k_EButton_SteamVR_Trigger)) { _Manager.DriveMovePosition(transform.position - _PrevPos); var rotDiff = (transform.rotation) * Quaternion.Inverse(_PrevRot); _Manager.DriveMoveRotation(Quaternion.Inverse(_Manager.rotRoot.rotation) * rotDiff * _Manager.rotRoot.rotation); _PrevPos = transform.position; _PrevRot = transform.rotation; } if (device.GetPressUp(EVRButtonId.k_EButton_SteamVR_Trigger)) { _Dragging = false; Release(); Owner.StopRumble(_Rumble); } } if (device.GetPressDown(EVRButtonId.k_EButton_SteamVR_Touchpad)) { if (IKCtrl.Visibility == IKCtrl.IKVisibility.Deactivated) { IKCtrl.Enable(); } else { IKCtrl.Toggle(); } } if (device.GetPressDown(EVRButtonId.k_EButton_Grip)) { if (IKCtrl.Visibility == IKCtrl.IKVisibility.Deactivated) { IKCtrl.Enable(); } else { IKCtrl.Disable(); } } } }