Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }