示例#1
0
        private bool GetSkeletonSettings()
        {
            bool getStatus = mProtocol.GetSkeletonSettings();

            if (!getStatus)
            {
                return(false);
            }

            mSkeletons.Clear();
            var skeletonSettings = mProtocol.SkeletonSettingsCollection;

            foreach (var settingSkeleton in skeletonSettings.SettingSkeletonList)
            {
                Skeleton skeleton = new Skeleton();
                skeleton.Name = settingSkeleton.Name;
                foreach (var settingSegment in settingSkeleton.SettingSegmentList)
                {
                    var segment = new Segment();
                    segment.Name     = settingSegment.Name;
                    segment.Id       = settingSegment.Id;
                    segment.ParentId = settingSegment.ParentId;

                    // Set rotation and position to work with unity
                    segment.TPosition = new Vector3(settingSegment.Position.X / 1000, settingSegment.Position.Z / 1000, settingSegment.Position.Y / 1000);
                    segment.TRotation = new Quaternion(settingSegment.Rotation.X, settingSegment.Rotation.Z, settingSegment.Rotation.Y, -settingSegment.Rotation.W);

                    skeleton.Segments.Add(segment.Id, segment);
                }
                mSkeletons.Add(skeleton);
            }
            return(true);
        }
        static bool GetSkeletonSettings(RTState state, RTProtocol mProtocol)
        {
            bool getStatus = mProtocol.GetSkeletonSettings();

            if (!getStatus)
            {
                return(false);
            }

            state.skeletons.Clear();
            var skeletonSettings = mProtocol.SkeletonSettings;

            foreach (var settingSkeleton in skeletonSettings.Skeletons)
            {
                Skeleton skeleton = new Skeleton();
                skeleton.Name = settingSkeleton.Name;
                foreach (var settingSegment in settingSkeleton.Segments)
                {
                    var segment = new Segment();
                    segment.Name     = settingSegment.Name;
                    segment.Id       = settingSegment.Id;
                    segment.ParentId = settingSegment.ParentId;

                    if (settingSegment.ParentId == 0)
                    {
                        segment.TPosition = settingSegment.Position.QtmRhsToUnityLhs(state.coordinateSystemChange);
                        segment.TRotation = settingSegment.Rotation.QtmRhsToUnityLhs(state.coordinateSystemChange);
                    }
                    else
                    {
                        segment.TPosition = settingSegment.Position.QtmRhsToUnityLhs();
                        segment.TRotation = settingSegment.Rotation.QtmRhsToUnityLhs();
                    }


                    skeleton.Segments.Add(segment.Id, segment);
                }
                state.skeletons.Add(skeleton);
            }
            return(true);
        }