public virtual void OnBeginDrag(PointerEventData eventData) { var hitDistance = 0f; switch (eventData.button) { case PointerEventData.InputButton.Middle: case PointerEventData.InputButton.Right: hitDistance = Mathf.Min(eventData.pointerPressRaycast.distance, m_initGrabDistance); break; case PointerEventData.InputButton.Left: hitDistance = eventData.pointerPressRaycast.distance; break; default: return; } var grabber = Grabber.Get(eventData); grabber.grabber2hit = new RigidPose(new Vector3(0f, 0f, hitDistance), Quaternion.identity); grabber.hit2pivot = RigidPose.FromToPose(grabber.grabberOrigin * grabber.grabber2hit, new RigidPose(transform)); if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <PointerEventData, Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); AddGrabber(grabber); }
public Grabber(IColliderEventCaster eventCaster, GameObject obj) { Debug.Log(3); this.eventCaster = eventCaster; this.grabbingObj = obj; this.grabOffset = RigidPose.FromToPose(new RigidPose(eventCaster.transform), new RigidPose(obj.transform)); }
public virtual void OnColliderEventDragStart(ColliderButtonEventData eventData) { if (eventData.button != m_grabButton) { return; } var casterPose = GetEventPose(eventData); var offsetPose = RigidPose.FromToPose(casterPose, new RigidPose(transform)); if (alignPosition) { offsetPose.pos = Vector3.zero; } if (alignRotation) { offsetPose.rot = Quaternion.identity; } if (eventData != grabbedEvent && beforeRelease != null) { beforeRelease.Invoke(this); } eventList.AddUniqueKey(eventData, offsetPose); if (afterGrabbed != null) { afterGrabbed.Invoke(this); } }
public virtual void OnColliderEventDragStart(ColliderButtonEventData eventData) { if (eventData.button != m_grabButton) { return; } if (!m_allowMultipleGrabbers) { ClearGrabbers(false); ClearEventGrabberSet(); } var grabber = Grabber.Get(eventData); var offset = RigidPose.FromToPose(grabber.grabberOrigin, new RigidPose(transform)); if (alignPosition) { offset.pos = alignPositionOffset; } if (alignRotation) { offset.rot = Quaternion.Euler(alignRotationOffset); } grabber.grabOffset = offset; if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <ColliderButtonEventData, Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); AddGrabber(grabber); }
public virtual void OnColliderEventDragStart(ColliderButtonEventData eventData) { if (!IsValidGrabButton(eventData)) { return; } if (!m_allowMultipleGrabbers) { ClearGrabbers(false); ClearEventGrabberSet(); } var grabber = BasicGrabbable.Grabber.Get(eventData); var offset = RigidPose.FromToPose(grabber.grabberOrigin, new RigidPose(transform)); grabber.grabOffset = offset; if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <ColliderButtonEventData, BasicGrabbable.Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); AddGrabber(grabber); Vector3 deltaVec = grabber.grabberOrigin.pos - transform.position; Vector3 deltaVecProjected = Vector3.ProjectOnPlane(deltaVec, transform.up).normalized; initialDeltaDegrees = Vector3.SignedAngle(transform.forward, deltaVecProjected, transform.up); }
protected override Grabber CreateGrabber(PointerEventData eventData) { var hitResult = eventData.pointerPressRaycast; float distance; switch (eventData.button) { case PointerEventData.InputButton.Middle: case PointerEventData.InputButton.Right: distance = Mathf.Min(hitResult.distance, initGrabDistance); break; case PointerEventData.InputButton.Left: distance = hitResult.distance; break; default: return(null); } var grabber = Grabber.Get(eventData); grabber.grabber2hit = new RigidPose(new Vector3(0f, 0f, distance), Quaternion.identity); grabber.hit2pivot = RigidPose.FromToPose(new RigidPose(hitResult.worldPosition, hitResult.module.eventCamera.transform.rotation), new RigidPose(transform)); return(grabber); }
public virtual void OnColliderEventPressDown(ColliderButtonEventData eventData) { if (eventData.button != m_grabButton || eventList.ContainsKey(eventData) || eventData == m_bannedEventData) { return; } var casterPose = GetEventPose(eventData); var offsetPose = RigidPose.FromToPose(casterPose, new RigidPose(transform)); if (alignPosition) { offsetPose.pos = Vector3.zero; } if (alignRotation) { offsetPose.rot = Quaternion.identity; } if (!m_multipleGrabbers && eventList.Count > 0) { Release(); } eventList.AddUniqueKey(eventData, offsetPose); if (afterGrabbed != null) { afterGrabbed.Invoke(this); } }
public virtual void OnColliderEventDragStart(ColliderButtonEventData eventData) { if ((gameObject.tag.IndexOf("plant") == -1) || (gameObject.tag.IndexOf("plant") != -1 && Manager.Instance.IsFruitReady(Int32.Parse(gameObject.tag[gameObject.tag.Length - 1].ToString())))) { if (eventData.button != m_grabButton) { return; } var casterPose = GetEventPose(eventData); var offsetPose = RigidPose.FromToPose(casterPose, new RigidPose(transform)); if (alignPosition) { offsetPose.pos = Vector3.zero; } if (alignRotation) { offsetPose.rot = Quaternion.identity; } if (eventData != grabbedEvent && beforeRelease != null) { beforeRelease.Invoke(this); } eventList.AddUniqueKey(eventData, offsetPose); if (afterGrabbed != null) { afterGrabbed.Invoke(this); } } }
public virtual void OnColliderEventPressDown(ColliderButtonEventData eventData) { GrabData grabData; if (eventData.button != m_grabButton) { return; } if (eventList.TryGetValue(eventData, out grabData)) { switch (grabData.grabState) { case EventGrabState.JustReleased: eventList.Remove(eventData); if (m_toggleReleaseCheckedFrame == Time.frameCount) { // skip when this event just released at the same frame return; } break; case EventGrabState.JustGrabbed: case EventGrabState.Grabbing: default: return; } } if (!m_multipleGrabbers) { Release(); } var casterPose = GetEventPose(eventData); var offsetPose = RigidPose.FromToPose(casterPose, new RigidPose(transform)); if (alignPosition) { offsetPose.pos = Vector3.zero; } if (alignRotation) { offsetPose.rot = Quaternion.identity; } grabData = new GrabData() { offset = offsetPose, grabState = isToggleReleaseCheckedThisFrame ? EventGrabState.Grabbing : EventGrabState.JustGrabbed, }; eventList.AddUniqueKey(eventData, grabData); if (afterGrabbed != null) { afterGrabbed.Invoke(this); } }
protected override Grabber CreateGrabber(ColliderButtonEventData eventData) { var grabber = Grabber.Get(eventData); var offset = RigidPose.FromToPose(grabber.grabberOrigin, new RigidPose(transform)); if (alignPosition) { offset.pos = alignPositionOffset; } if (alignRotation) { offset.rot = Quaternion.Euler(alignRotationOffset); } grabber.grabOffset = offset; return(grabber); }
public virtual void OnBeginDrag(PointerEventData eventData) { var hitDistance = 0f; //수정한 코드 VivePointerEventData viveEventData; if (eventData.TryGetViveButtonEventData(out viveEventData)) { if (viveEventData.viveButton == ControllerButton.Pad) { return; } } ///////////////////////////////// switch (eventData.button) { case PointerEventData.InputButton.Middle: case PointerEventData.InputButton.Right: hitDistance = Mathf.Min(eventData.pointerPressRaycast.distance, m_initGrabDistance); break; case PointerEventData.InputButton.Left: hitDistance = eventData.pointerPressRaycast.distance; break; default: return; } var grabber = Grabber.Get(eventData); grabber.grabber2hit = new RigidPose(new Vector3(0f, 0f, hitDistance), Quaternion.identity); grabber.hit2pivot = RigidPose.FromToPose(grabber.grabberOrigin * grabber.grabber2hit, new RigidPose(transform)); if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <PointerEventData, Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); AddGrabber(grabber); GameObject.Find("LocalPlayer").GetComponent <isLocalPlayer>().CmdClientAuthority(gameObject); }
public virtual void OnColliderEventPressDown(ColliderButtonEventData eventData) { if (eventData.button != m_grabButton) { return; } Grabber grabber; if (m_eventGrabberSet == null || !m_eventGrabberSet.TryGetValue(eventData, out grabber)) { if (!m_allowMultipleGrabbers) { ClearGrabbers(false); ClearEventGrabberSet(); } grabber = Grabber.Get(eventData); var offset = RigidPose.FromToPose(grabber.grabberOrigin, new RigidPose(transform)); if (alignPosition) { offset.pos = alignPositionOffset; } if (alignRotation) { offset.rot = Quaternion.Euler(alignRotationOffset); } grabber.grabOffset = offset; grabber.grabFrame = Time.frameCount; if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <ColliderButtonEventData, Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); AddGrabber(grabber); } else if (toggleToRelease) { RemoveGrabber(grabber); m_eventGrabberSet.Remove(eventData); Grabber.Release(grabber); } }
public virtual void OnBeginDrag(PointerEventData eventData) { var casterPose = GetEventPose(eventData); var offsetPose = new RigidPose(); switch (eventData.button) { case PointerEventData.InputButton.Middle: case PointerEventData.InputButton.Right: { var hitResult = eventData.pointerPressRaycast; var hitPose = new RigidPose(hitResult.worldPosition, casterPose.rot); var caster2hit = new RigidPose(Vector3.forward * Mathf.Min(hitResult.distance, initGrabDistance), Quaternion.identity); var hit2center = RigidPose.FromToPose(hitPose, new RigidPose(transform)); offsetPose = caster2hit * hit2center; break; } case PointerEventData.InputButton.Left: default: { offsetPose = RigidPose.FromToPose(casterPose, new RigidPose(transform)); break; } } if (eventData != draggedEvent && beforeRelease != null) { beforeRelease.Invoke(this); } eventList.AddUniqueKey(eventData, offsetPose); if (afterDragged != null) { afterDragged.Invoke(this); } }
public virtual void OnColliderEventDragStart(ColliderButtonEventData eventData) { if (!IsValidGrabButton(eventData)) { return; } if (!m_allowMultipleGrabbers) { ClearGrabbers(false); ClearEventGrabberSet(); } var grabber = Grabber.Get(eventData); var offset = RigidPose.FromToPose(grabber.grabberOrigin, new RigidPose(transform)); if (alignPosition) { offset.pos = alignPositionOffset; } if (alignRotation) { offset.rot = Quaternion.Euler(alignRotationOffset); } grabber.grabOffset = offset; if (m_eventGrabberSet == null) { m_eventGrabberSet = new IndexedTable <ColliderButtonEventData, Grabber>(); } m_eventGrabberSet.Add(eventData, grabber); lastJoy = eventData; AddGrabber(grabber); //if (gameObject.GetComponent<PortalTraveller>() != null) gameObject.GetComponent<PortalTraveller>().readyToTeleport = false; }
private void InitializeDevice(IVRModuleDeviceStateRW hmdState, IVRModuleDeviceStateRW deviceState) { switch (deviceState.deviceIndex) { case VRModule.HMD_DEVICE_INDEX: { deviceState.isConnected = true; deviceState.deviceClass = VRModuleDeviceClass.HMD; deviceState.serialNumber = "VIU Simulator HMD Device"; deviceState.modelNumber = deviceState.serialNumber; deviceState.renderModelName = deviceState.serialNumber; deviceState.deviceModel = VRModuleDeviceModel.ViveHMD; deviceState.isPoseValid = true; deviceState.pose = s_initHmdPose; break; } case RIGHT_INDEX: { deviceState.isConnected = true; deviceState.deviceClass = VRModuleDeviceClass.Controller; deviceState.serialNumber = "VIU Simulator Controller Device " + RIGHT_INDEX; deviceState.modelNumber = deviceState.serialNumber; deviceState.renderModelName = deviceState.serialNumber; deviceState.deviceModel = VRModuleDeviceModel.ViveController; var pose = new RigidPose(new Vector3(0.3f, -0.25f, 0.7f), Quaternion.identity); deviceState.isPoseValid = true; deviceState.pose = (hmdState.isConnected ? hmdState.pose : s_initHmdPose) * pose; s_offsetRightController = RigidPose.FromToPose(hmdState.isConnected ? hmdState.pose : s_initHmdPose, deviceState.pose); deviceState.buttonPressed = 0ul; deviceState.buttonTouched = 0ul; deviceState.ResetAxisValues(); break; } case LEFT_INDEX: { deviceState.isConnected = true; deviceState.deviceClass = VRModuleDeviceClass.Controller; deviceState.serialNumber = "VIU Simulator Controller Device " + LEFT_INDEX; deviceState.modelNumber = deviceState.serialNumber; deviceState.renderModelName = deviceState.serialNumber; deviceState.deviceModel = VRModuleDeviceModel.ViveController; var pose = new RigidPose(new Vector3(-0.3f, -0.25f, 0.7f), Quaternion.identity); deviceState.isPoseValid = true; deviceState.pose = (hmdState.isConnected ? hmdState.pose : s_initHmdPose) * pose; s_offsetLeftController = RigidPose.FromToPose(hmdState.isConnected ? hmdState.pose : s_initHmdPose, deviceState.pose); deviceState.buttonPressed = 0ul; deviceState.buttonTouched = 0ul; deviceState.ResetAxisValues(); break; } default: { deviceState.isConnected = true; deviceState.deviceClass = VRModuleDeviceClass.GenericTracker; deviceState.serialNumber = "VIU Simulator Generic Tracker Device " + deviceState.deviceIndex; deviceState.modelNumber = deviceState.serialNumber; deviceState.renderModelName = deviceState.serialNumber; deviceState.deviceModel = VRModuleDeviceModel.ViveTracker; var pose = new RigidPose(new Vector3(0f, -0.25f, 0.7f), Quaternion.identity); deviceState.isPoseValid = true; deviceState.pose = (hmdState.isConnected ? hmdState.pose : s_initHmdPose) * pose; s_offsetTracker = RigidPose.FromToPose(hmdState.isConnected ? hmdState.pose : s_initHmdPose, deviceState.pose); deviceState.buttonPressed = 0ul; deviceState.buttonTouched = 0ul; deviceState.ResetAxisValues(); break; } } }