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); }