public AnimationPlayer(AnimatedModelData modelData) { this.modelData = modelData; bones = new Matrix[modelData.BonesBindPose.Length]; bonesAbsolute = new Matrix[modelData.BonesBindPose.Length]; bonesAnimation = new Matrix[modelData.BonesBindPose.Length]; for (int i = 0; i < bones.Length; i++) { bones[i] = modelData.BonesBindPose[i]; } }
internal AnimatedModel(Model model, AnimationClip[] clips, string[] clipNames) { this.model = model; Dictionary <string, object> tag = model.Tag as Dictionary <string, object>; animationData = tag["AnimatedModelData"] as AnimatedModelData; this.clips = new Dictionary <string, AnimationClip>(); for (int i = 0; i < clips.Length; i++) { this.clips[clipNames[i]] = clips[i]; } }
protected override AnimatedModel Read(ContentReader input, AnimatedModel existingInstance) { Model model = input.ReadObject <Model>(); int frameCount = input.ReadInt32(); int clipCount = input.ReadInt32(); Dictionary <string, object> tag = model.Tag as Dictionary <string, object>; AnimatedModelData animationData = tag["AnimatedModelData"] as AnimatedModelData; AnimationClip clip = animationData.Animations[0]; AnimationClip[] clips = new AnimationClip[clipCount]; string[] clipNames = new string[clipCount]; for (int i = 0; i < clipCount; i++) { clipNames[i] = input.ReadString(); int startFrame = input.ReadInt32(); int endFrame = input.ReadInt32(); clips[i] = clip.Divide(startFrame, endFrame, frameCount); } return(new AnimatedModel(model, clips, clipNames)); }