Exemplo n.º 1
0
    private void Awake()
    {
        if (_dataProvider == null)
        {
            _dataProvider = GetComponent <IOVRMeshRendererDataProvider>();
        }

        if (_ovrMesh == null)
        {
            _ovrMesh = GetComponent <OVRMesh>();
        }

        if (_ovrSkeleton == null)
        {
            _ovrSkeleton = GetComponent <OVRSkeleton>();
        }
    }
        public void Initialize(bool isLeftHand)
        {
            m_isLeftHand = isLeftHand;

            try
            {
                m_ovrHand = gameObject.AddComponent <OVRHand>();
                UpdateOvrHand();

                m_ovrSkeleton = gameObject.AddComponent <OVRSkeleton>();
                UpdateOvrSkeleton();

                FieldInfo updateRootScaleField = m_ovrSkeleton.GetType().GetField("_updateRootScale", BindingFlags.NonPublic | BindingFlags.Instance);
                updateRootScaleField.SetValue(m_ovrSkeleton, true);

                FieldInfo updateRootPoseField = m_ovrSkeleton.GetType().GetField("_updateRootPose", BindingFlags.NonPublic | BindingFlags.Instance);
                updateRootPoseField.SetValue(m_ovrSkeleton, true);

                MethodInfo skeletonInitializeMethod = m_ovrSkeleton.GetType().GetMethod("Initialize", BindingFlags.NonPublic | BindingFlags.Instance);
                skeletonInitializeMethod.Invoke(m_ovrSkeleton, new object[] { });

                m_ovrMesh = gameObject.AddComponent <OVRMesh>();
                UpdateOvrMesh();

                MethodInfo meshInitializeMethod = m_ovrMesh.GetType().GetMethod("Initialize", BindingFlags.NonPublic | BindingFlags.Instance);
                meshInitializeMethod.Invoke(m_ovrMesh, new object[] { m_isLeftHand?OVRMesh.MeshType.HandLeft: OVRMesh.MeshType.HandRight });

                gameObject.AddComponent <OVRMeshRenderer>();

                SkinnedMeshRenderer skinnedMeshRenderer = gameObject.AddComponent <SkinnedMeshRenderer>();
                skinnedMeshRenderer.material = new Material(Shader.Find("Legacy Shaders/Diffuse"));
            }
            catch (Exception e)
            {
                Debug.LogError("OculusHandRenderModel initialize failed: " + e);
            }
        }
Exemplo n.º 3
0
 public OVRHandMeshReflection(OVRMesh handMesh)
 {
     HandMesh = handMesh;
     Mesh     = typeof(OVRMesh).CreateFieldAccess <OVRMesh, Mesh>(HandMesh, "_mesh");
 }