示例#1
0
 public static AnimationTemplate <TBoneParameters, TKeyframeParameters, TBoneAttributes> FromJsonFile(string filename)
 {
     using (var reader = File.OpenText(filename))
     {
         return(AnimationTemplate <TBoneParameters, TKeyframeParameters, TBoneAttributes> .FromJsonTextReader(reader));
     }
 }
示例#2
0
        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);
        }