computeLineDistances method

dynamic computeLineDistances()

Implementation

computeLineDistances() {
  // for backwards-compatability, but could be a method of LineSegmentsGeometry...

  var start = new Vector3.init();
  var end = new Vector3.init();

  var geometry = this.geometry!;

  var instanceStart = geometry.attributes["instanceStart"];
  var instanceEnd = geometry.attributes["instanceEnd"];
  var lineDistances =
      new Float32Array((2 * instanceStart.data.count).toInt());

  for (var i = 0, j = 0, l = instanceStart.data.count; i < l; i++, j += 2) {
    start.fromBufferAttribute(instanceStart, i);
    end.fromBufferAttribute(instanceEnd, i);

    lineDistances[j] = (j == 0) ? 0.0 : lineDistances[j - 1];
    lineDistances[j + 1] = lineDistances[j] + start.distanceTo(end);
  }

  var instanceDistanceBuffer =
      new InstancedInterleavedBuffer(lineDistances, 2, 1); // d0, d1

  geometry.setAttribute(
      'instanceDistanceStart',
      new InterleavedBufferAttribute(
          instanceDistanceBuffer, 1, 0, false)); // d0
  geometry.setAttribute(
      'instanceDistanceEnd',
      new InterleavedBufferAttribute(
          instanceDistanceBuffer, 1, 1, false)); // d1

  return this;
}