GTween constructor
Creates a new GTween instance with the specified target object, duration, and variables.
Implementation
GTween(
this.target,
double duration,
this.vars, [
GVars? myVars,
]) {
if (!GTween.initializedEngine) {
GTween._initEngine();
}
nanoVars = myVars ?? GVars();
nanoVars.defaults();
nanoVars._setTween(this);
// this.vars = vars;
_duration = duration;
// this.target = target;
if (target is List) {
var targetList = target as List;
if (targetList.first is Map<String, dynamic> ||
targetList.first is GTweenable) {
_targets = List.of(target as Iterable<dynamic>);
}
/// TODO : add wrap support.
} else if (target is GTweenable) {
_animatableTarget = (target as GTweenable).target;
} else {
if (target is Function || target is Map) {
/// no process.
} else {
/// target can be a Function.
GTweenable? result;
for (final builder in _tweenableBuilders) {
result = builder(target);
if (result != null) {
break;
}
}
target = result;
_animatableTarget = result?.target;
}
}
// _rawEase = nanoVars.ease;
// _ease = _rawEase?.getRatio;
_ease = nanoVars.ease ?? GTween.defaultEase;
_useFrames = nanoVars.useFrames ?? false;
_startTime = (_useFrames ? _frame : _time) + (nanoVars.delay ?? 0);
if (nanoVars.overwrite == 1) {
if (_animatableTarget != null) {
killTweensOf(_animatableTarget);
} else {
killTweensOf(target);
}
}
_prev = GTween._last;
if (GTween._last != null) {
GTween._last!._next = this;
} else {
GTween._first = this;
}
GTween._last = this;
if (nanoVars.immediateRender! ||
(duration == 0 &&
nanoVars.delay == 0 &&
nanoVars.immediateRender != false)) {
_render(0.0);
}
}