//CameraNode.MoveTo(vector3, Easing.In); public static void MoveTo(this Node node, Vector3 Endpos, Easeing easeing, float duration, float easetime = 2f) { ValueAnimation posanim = new ValueAnimation(DefaultScene.scene.Context); posanim.InterpolationMethod = InterpMethod.ImLinear; posanim.SetKeyFrame(0f, node.Position); //Debug.WriteLine($"Node: {node.ID} => Before Move {node.WorldPosition}"); var incr = 1 / (easetime * 100); float consumed = 0; for (float i = 0; i < 1; i += incr) { float time = 0; switch (easeing) { case Easeing.In: time = EaseMath.ElasticIn(i); break; default: break; } posanim.SetKeyFrame(i * easetime, getposition(node.Position, Endpos, time)); consumed += easetime * i; } posanim.SetKeyFrame(duration - consumed, Endpos); node.RemoveAttributeAnimation("Position"); node.SetAttributeAnimation("Position", posanim, WrapMode.WmOnce); // node.SetWorldPosition(Endpos); //Debug.WriteLine($"Node: {node.ID} => After Move {node.WorldPosition}"); }
public override void Update(float time) { InnerActionState.Update(EaseMath.BounceIn(time)); }
public override void Update(float time) { InnerActionState.Update(EaseMath.BackOut(time)); }
public override void Update(float time) { InnerActionState.Update(EaseMath.ExponentialOut(time)); }
public override void Update(float time) { InnerActionState.Update(EaseMath.ElasticInOut(time, Period)); }