From 86d5154839c0dc535e372f09f79d4785b7b8c2c6 Mon Sep 17 00:00:00 2001 From: Ivan KaiSD Korystin Date: Tue, 17 Jun 2014 02:32:31 +0400 Subject: [PATCH] new action ActionBezierAbs.cs --- README.md | 3 +- src/ActionsInterval/ActionBezierAbs.cs | 45 ++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/ActionsInterval/ActionBezierAbs.cs diff --git a/README.md b/README.md index 8c337cd..ff29c1b 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,8 @@ Interval actions - [x] FadeBy *if you want to manipulate alpha, your material must support transparency* - [ ] JumpTo - [ ] JumpBy -- [ ] Bezier +- [x] BezierAbs +- [ ] BezierRel - [ ] Blink Instant actions diff --git a/src/ActionsInterval/ActionBezierAbs.cs b/src/ActionsInterval/ActionBezierAbs.cs new file mode 100644 index 0000000..7079d51 --- /dev/null +++ b/src/ActionsInterval/ActionBezierAbs.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +class ActionBezierAbs : ActionInterval +{ + public Vector3 startPoint; + public Vector3 endPoint; + public Vector3 startControlPoint; + public Vector3 endControlPoint; + + public ActionBezierAbs(Vector3 tgtStart, Vector3 tgtSCP, Vector3 tgtECP, Vector3 tgtEnd, float tgtDuration) + : base(tgtDuration) + { + startPoint = tgtStart; + endPoint = tgtEnd; + startControlPoint = tgtSCP; + endControlPoint = tgtECP; + } + + public override Action clone() + { + return new ActionBezierAbs(startPoint, startControlPoint, endControlPoint, endPoint, duration); + } + + public override Action reverse() + { + return new ActionBezierAbs(endPoint, endControlPoint, startControlPoint, startPoint, duration); + } + + public override void start() + { + base.start(); + } + + public override void stepInterval(float dt) + { + float t = timer / duration; + Vector3 newPosition = (((-startPoint + + 3 * (startControlPoint - endControlPoint) + endPoint) * t + + (3 * (startPoint + endControlPoint) - 6 * startControlPoint)) * t + + 3 * (startControlPoint - startPoint)) * t + startPoint; + target.gameObject.transform.position = newPosition; + } +} \ No newline at end of file