예제 #1
0
        protected override AnimatableProperty <XNAV3> GetScale(GLTFNODE node)
        {
            var lxform = node.LocalTransform.ToXna();

            var s = new AnimatableProperty <XNAV3>(lxform.Scale);

            foreach (var anim in node.LogicalParent.LogicalAnimations)
            {
                var sAnim = anim
                            .FindScaleChannel(node)
                            ?.GetScaleSampler()
                            ?.CreateCurveSampler(true)
                            .ToXna();

                if (sAnim != null)
                {
                    s.SetCurve(anim.LogicalIndex, sAnim);
                }
            }

            return(s);
        }
예제 #2
0
        protected override AnimatableProperty <XNAQUAT> GetRotation(GLTFNODE node)
        {
            var lxform = node.LocalTransform.ToXna();

            var r = new AnimatableProperty <XNAQUAT>(lxform.Rotation);

            foreach (var anim in node.LogicalParent.LogicalAnimations)
            {
                var rAnim = anim
                            .FindRotationChannel(node)
                            ?.GetRotationSampler()
                            ?.CreateCurveSampler(true)
                            .ToXna();

                if (rAnim != null)
                {
                    r.SetCurve(anim.LogicalIndex, rAnim);
                }
            }

            return(r);
        }
예제 #3
0
        protected override AnimatableProperty <XNAV3> GetTranslation(GLTFNODE node)
        {
            var lxform = node.LocalTransform.ToXna();

            var t = new AnimatableProperty <XNAV3>(lxform.Translation);

            foreach (var anim in node.LogicalParent.LogicalAnimations)
            {
                var tAnim = anim
                            .FindTranslationChannel(node)
                            ?.GetTranslationSampler()
                            ?.CreateCurveSampler(true)
                            .ToXna();

                if (tAnim != null)
                {
                    t.SetCurve(anim.LogicalIndex, tAnim);
                }
            }

            return(t);
        }