internal TransformObject([NotNull] string name, [NotNull] RawTransform transform) { Name = name; Transform = transform; Children = Array.Empty <TransformObject>(); ChildList = new List <TransformObject>(); }
internal PrettySkeletonPose([NotNull] SkeletonPose pose) { var transformCount = pose.m_X.Length; var transforms = new RawTransform[transformCount]; for (var i = 0; i < transformCount; i += 1) { var t = new RawTransform(pose.m_X[i]); transforms[i] = t; } Transforms = transforms; }
private static void BuildHierarchy([NotNull] GameObject root, [NotNull] SerializedObjectsLookup serializedObjectsLookup, [NotNull] Dictionary <long, TransformObject> objObjMap) { if (objObjMap.ContainsKey(root.m_PathID)) { return; } var transform = new RawTransform(root.m_Transform); var transformObject = new TransformObject(root.m_Name, transform); objObjMap.Add(root.m_PathID, transformObject); { var childTransforms = root.m_Transform.m_Children; if (childTransforms.Length > 0) { var childList = transformObject.ChildList; Debug.Assert(childList != null, nameof(childList) + " != null"); foreach (var childTransform in childTransforms) { Debug.Assert(childTransform != null, nameof(childTransform) + " != null"); var childGameObject = serializedObjectsLookup.Find <GameObject>(t => t.m_Transform.m_PathID == childTransform.m_PathID); Debug.Assert(childGameObject != null, nameof(childGameObject) + " != null"); BuildHierarchy(childGameObject, serializedObjectsLookup, objObjMap); childList.Add(objObjMap[childGameObject.m_PathID]); } } } { var parentTransform = root.m_Transform.m_Father; if (!parentTransform.IsNull) { var parentGameObject = serializedObjectsLookup.Find <GameObject>(t => t.m_Transform.m_PathID == parentTransform.m_PathID); Debug.Assert(parentGameObject != null, nameof(parentGameObject) + " != null"); BuildHierarchy(parentGameObject, serializedObjectsLookup, objObjMap); transformObject.Parent = objObjMap[parentGameObject.m_PathID]; } } }