public static AnimationTemplate <TBoneParameters, TKeyframeParameters, TBoneAttributes> FromJsonFile(string filename) { using (var reader = File.OpenText(filename)) { return(AnimationTemplate <TBoneParameters, TKeyframeParameters, TBoneAttributes> .FromJsonTextReader(reader)); } }
public AnimationSystem( AnimationTemplate <TBoneParameters, TKeyframeParameters, TBoneAttributes> template, string baseFrameName = "base") { this.template = template; var skeleton = new List <Bone <TBoneParameters, TKeyframeParameters, TBoneAttributes, TBoneTransformation> >(template.Skeleton.Bones.Count); var rootIndices = new List <int>(); foreach (var b in template.Skeleton.Bones) { skeleton.Add( new Bone <TBoneParameters, TKeyframeParameters, TBoneAttributes, TBoneTransformation> (b.Parent == null ? null : skeleton[b.Parent.Id], b) ); if (b.Parent == null) { rootIndices.Add(b.Id); } } this.skeleton = skeleton.AsReadOnly(); this.rootIndices = rootIndices.ToArray(); this.baseParameters = new TBoneParameters[this.skeleton.Count]; this.parameters = new TBoneParameters[this.skeleton.Count]; var defaultParams = default(TBoneParameters); defaultParams.SetToDefault(); for (int i = 0; i < this.baseParameters.Length; i++) { this.baseParameters[i] = defaultParams; } Keyframe <TBoneParameters, TKeyframeParameters, TBoneAttributes> baseFrame; if (baseFrameName != null && (baseFrame = template.GetKeyFrame(baseFrameName)) != null) { baseFrame.ApplyTo(this.baseParameters, 1); } this.RootParameters = default(TKeyframeParameters); }