GTween constructor

GTween(
  1. Object? target,
  2. double duration,
  3. Map? vars, [
  4. GVars? myVars,
])

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);
  }
}