.entity parent;
- entity makeHostedKeyframe(entity obj, void(entity, float) objSetter, float animDuration, float animStart, float animEnd)
- {
- entity this = makeKeyframe(obj, objSetter, animDuration, animStart, animEnd);
- anim.addAnim(anim, this);
- return this;
+entity makeHostedKeyframe(entity obj, void(entity, float) objSetter, float animDuration, float animStart, float animEnd)
+{
+ entity this = makeKeyframe(obj, objSetter, animDuration, animStart, animEnd);
+ anim.addAnim(anim, this);
+ return this;
+}
+
+entity makeKeyframe(entity obj, void(entity, float) objSetter, float animDuration, float animStart, float animEnd)
+{
+ entity this = NEW(Keyframe);
+ this.configureAnimation(this, obj, objSetter, time, animDuration, animStart, animEnd);
+ return this;
+}
+
+METHOD(Keyframe, addEasing, entity(entity this, float animDurationTime, float animEnd, float(float, float, float, float) func))
+{
+ entity other = makeEasing(this.object, this.setter, func, getNewChildStart(this), getNewChildDuration(this, animDurationTime), getNewChildValue(this), animEnd);
+ this.addAnim(this, other);
+ return other;
+}
+
+float getNewChildStart(entity this)
+{
+ if (this.lastChild) { return this.lastChild.startTime + this.lastChild.duration; } else { return 0; }
+}
+
+float getNewChildDuration(entity this, float durationTime)
+{
+ float maxDura = this.duration;
+ if (this.lastChild) { maxDura = maxDura - (this.lastChild.startTime + this.lastChild.duration); }
+ float dura = durationTime;
+ if (0 >= dura || dura > maxDura) { dura = maxDura; }
+ return dura;
+}
+
+float getNewChildValue(entity this)
+{
+ if (this.lastChild) { return this.lastChild.startValue + this.lastChild.delta; } else { return this.startValue; }
+}
+
+METHOD(Keyframe, addAnim, void(entity this, entity other))
+{
+ if (other.parent) { error("Can't add already added anim!"); }
+
+ if (other.isFinished(other)) { error("Can't add finished anim!"); }
+
+ other.parent = this;
+
+ entity l = this.lastChild;
+
+ if (l) {
+ l.nextSibling = other;
+ } else {
+ this.currentChild = other;
+ this.firstChild = other;
}
- entity makeKeyframe(entity obj, void(entity, float) objSetter, float animDuration, float animStart, float animEnd)
- {
- entity this = NEW(Keyframe);
- this.configureAnimation(this, obj, objSetter, time, animDuration, animStart, animEnd);
- return this;
- }
-
- METHOD(Keyframe, addEasing, entity(entity this, float animDurationTime, float animEnd, float(float, float, float, float) func))
- {
- entity other = makeEasing(this.object, this.setter, func, getNewChildStart(this), getNewChildDuration(this, animDurationTime), getNewChildValue(this), animEnd);
- this.addAnim(this, other);
- return other;
- }
-
- float getNewChildStart(entity this)
- {
- if (this.lastChild) return this.lastChild.startTime + this.lastChild.duration;
- else return 0;
- }
-
- float getNewChildDuration(entity this, float durationTime)
- {
- float maxDura = this.duration;
- if (this.lastChild) maxDura = maxDura - (this.lastChild.startTime + this.lastChild.duration);
- float dura = durationTime;
- if (0 >= dura || dura > maxDura) dura = maxDura;
- return dura;
- }
-
- float getNewChildValue(entity this)
- {
- if (this.lastChild) return this.lastChild.startValue + this.lastChild.delta;
- else return this.startValue;
- }
-
- METHOD(Keyframe, addAnim, void(entity this, entity other))
- {
- if (other.parent) error("Can't add already added anim!");
-
- if (other.isFinished(other)) error("Can't add finished anim!");
-
- other.parent = this;
+ other.prevSibling = l;
+ other.nextSibling = NULL;
+ this.lastChild = other;
+}
- entity l = this.lastChild;
+METHOD(Keyframe, calcValue, float(entity this, float tickTime, float animDuration, float animStartValue, float animDelta))
+{
+ if (this.currentChild) {
+ if (this.currentChild.isFinished(this.currentChild)) { this.currentChild = this.currentChild.nextSibling; } }
- if (l)
- {
- l.nextSibling = other;
- }
- else
- {
- this.currentChild = other;
- this.firstChild = other;
- }
-
- other.prevSibling = l;
- other.nextSibling = NULL;
- this.lastChild = other;
+ if (this.currentChild) {
+ this.currentChild.tick(this.currentChild, tickTime);
+ return this.currentChild.value;
}
- METHOD(Keyframe, calcValue, float(entity this, float tickTime, float animDuration, float animStartValue, float animDelta))
- {
- if (this.currentChild)
- if (this.currentChild.isFinished(this.currentChild)) this.currentChild = this.currentChild.nextSibling;
-
- if (this.currentChild)
- {
- this.currentChild.tick(this.currentChild, tickTime);
- return this.currentChild.value;
- }
-
- return animStartValue + animDelta;
- }
+ return animStartValue + animDelta;
+}