private void SetupHandCursors() { var canvas = m_handCanvas = new GameObject().AddComponent <Canvas>(); canvas.renderMode = RenderMode.WorldSpace; canvas.transform.SetParent(transform, false); // Copied straight out of Unity canvas.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 200); canvas.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 200); canvas.transform.localPosition = new Vector3(0, -0.02725995f, 0.2f); canvas.transform.localRotation = Quaternion.Euler(0, 0, 0); canvas.transform.localScale = new Vector3(4.930151e-05f, 4.930148e-05f, 0); canvas.gameObject.layer = 0; m_handOpen = LoadHandCursor("hand.png"); m_handGrab = LoadHandCursor("hand_grab.png"); m_raycastTransform = new GameObject().transform; m_raycastTransform.SetParent(transform, false); if (SteamVR.instance.hmd_TrackingSystemName == "lighthouse") { m_raycastTransform.localRotation = Quaternion.Euler(60, 0, 0); m_raycastTransform.position += m_raycastTransform.forward * 0.06f; } m_eHandMode = EHandMode.NONE; }
private void EnterHandMode(EHandMode mode) { if (m_eHandMode == mode) { return; } if (m_eHandMode == EHandMode.GRABBING) { if (m_bGravityChanged) { m_grabbedActor.Actor.body.bustDynamicBone_L.setGravity(0, m_grabStartGravityL); m_grabbedActor.Actor.body.bustDynamicBone_R.setGravity(0, m_grabStartGravityR); m_bGravityChanged = false; } Owner?.StopRumble(m_rumble); } m_eHandMode = mode; if (mode == EHandMode.GRABBING) { m_grabStartControllerPos = m_raycastTransform.position; m_rumble.Reset(); Owner?.StartRumble(m_rumble); } m_handOpen.gameObject.SetActive(mode == EHandMode.SHOW); m_handGrab.gameObject.SetActive(mode == EHandMode.GRABBING); }