trim method

dynamic trim(
  1. dynamic startTime,
  2. dynamic endTime
)

Implementation

trim(startTime, endTime) {
  var times = this.times, nKeys = times.length;

  var from = 0, to = nKeys - 1;

  while (from != nKeys && times[from] < startTime) {
    ++from;
  }

  while (to != -1 && times[to] > endTime) {
    --to;
  }

  ++to; // inclusive -> exclusive bound

  if (from != 0 || to != nKeys) {
    // empty tracks are forbidden, so keep at least one keyframe
    if (from >= to) {
      to = Math.max(to, 1).toInt();
      from = to - 1;
    }

    var stride = getValueSize();
    this.times = AnimationUtils.arraySlice(times, from, to);
    values = AnimationUtils.arraySlice(
        values, (from * stride).toInt(), (to * stride).toInt());
  }

  return this;
}