示例#1
0
 /// <summary>
 /// Searchs for the right handeness hand in the Avatar if available.
 /// </summary>
 private void FindHand()
 {
     if (_avatarHandComponent == null)
     {
         OvrAvatarHand avatarHand = handeness == Handeness.Right ? avatar.HandRight : avatar.HandLeft;
         _avatarHandComponent = avatarHand?.RenderParts[0];
     }
 }
示例#2
0
文件: OvrAvatar.cs 项目: Geli25/COPA
    private void BuildRenderComponents()
    {
        var leftHand        = CAPI.ovrAvatarPose_GetLeftHandComponent(sdkAvatar);
        var rightHand       = CAPI.ovrAvatarPose_GetRightHandComponent(sdkAvatar);
        var body            = CAPI.ovrAvatarPose_GetBodyComponent(sdkAvatar);
        var leftController  = CAPI.ovrAvatarPose_GetLeftControllerComponent(sdkAvatar);
        var rightController = CAPI.ovrAvatarPose_GetRightControllerComponent(sdkAvatar);
        var baseComponent   = CAPI.ovrAvatarPose_GetBaseComponent(sdkAvatar);

        UInt32 componentCount = CAPI.ovrAvatarComponent_Count(sdkAvatar);

        for (UInt32 i = 0; i < componentCount; i++)
        {
            IntPtr             ptr       = CAPI.ovrAvatarComponent_Get_Native(sdkAvatar, i);
            ovrAvatarComponent component = (ovrAvatarComponent)Marshal.PtrToStructure(ptr, typeof(ovrAvatarComponent));
            if (!trackedComponents.ContainsKey(component.name))
            {
                GameObject componentObject = new GameObject();
                componentObject.name = component.name;
                componentObject.transform.SetParent(transform);
                AddAvatarComponent(componentObject, component);

                if (leftHand.HasValue && ptr == leftHand.Value.renderComponent)
                {
                    HandLeft = componentObject.AddComponent <OvrAvatarHand>();
                }

                if (rightHand.HasValue && ptr == rightHand.Value.renderComponent)
                {
                    HandRight = componentObject.AddComponent <OvrAvatarHand>();
                }

                if (body.HasValue && ptr == body.Value.renderComponent)
                {
                    Body = componentObject.AddComponent <OvrAvatarBody>();
                }

                if (leftController.HasValue && ptr == leftController.Value.renderComponent)
                {
                    ControllerLeft = componentObject.AddComponent <OvrAvatarTouchController>();
                }

                if (rightController.HasValue && ptr == rightController.Value.renderComponent)
                {
                    ControllerRight = componentObject.AddComponent <OvrAvatarTouchController>();
                }

                if (baseComponent.HasValue && ptr == baseComponent.Value.renderComponent)
                {
                    Base = componentObject.AddComponent <OvrAvatarBase>();
                }
            }
        }
    }