public Bone(Skeleton skeleton, JointType name, Bone parent, double length, Vector3D direction) { this.skeleton = skeleton; this.name = name; this.parent = parent; this.length = length; tPoseDirection = direction; logger.Trace("Create {0}. Length: {1}", this, this.length); }
private Bone CreateBone(JointType name, Bone parent, double length, Vector3D tPoseDirection) { var bone = new Bone(this, name, parent, length, tPoseDirection); bones.Add(bone); return bone; }
private JointType GetParentName(Bone bone) { return bone.parent == null ? JointType.SpineBase : bone.parent.name; }
private void WriteBone(Bone bone, int indent) { var indentString = CreateIndent(indent); var offset = bone.Parent == null ? new Vector3D(0, Settings.Default.SpineBaseBoneLength, 0) : bone.Parent.InitialOffset; var jointStartString = string.Format(JOINT_START , bone.Name , offset.X , offset.Y , offset.Z , indentString); writer.WriteLine(jointStartString); if (bone.IsEnd) { offset = bone.InitialOffset; var endString = string.Format(END , offset.X , offset.Y , offset.Z , CreateIndent(indent + 1)); writer.WriteLine(endString); } else { foreach (var child in bone.Children) { WriteBone(child, indent + 1); } } writer.WriteLine(string.Format(JOINT_END, indentString)); }