build method

dynamic build()

Implementation

build() {

  var positionAttribute = this.positionAttribute;
  var weightAttribute = this.weightAttribute;
  var faceWeights = new Float32List( positionAttribute.count ~/ 3 ); // Accumulate weights for each mesh face.

  for ( int i = 0; i < positionAttribute.count; i += 3 ) {

    num faceWeight = 1.0;

    if ( weightAttribute != null ) {

      faceWeight = weightAttribute.getX( i )! + weightAttribute.getX( i + 1 )! + weightAttribute.getX( i + 2 )!;

    }

    if(i < positionAttribute.count) {
      _face.a.fromBufferAttribute( positionAttribute, i );
    }

    if(i + 1 < positionAttribute.count) {
      _face.b.fromBufferAttribute( positionAttribute, i + 1 );
    }

    if(i + 2 < positionAttribute.count) {
      _face.c.fromBufferAttribute( positionAttribute, i + 2 );
    }


    faceWeight *= _face.getArea();
    faceWeights[ i ~/ 3 ] = faceWeight.toDouble();

  } // Store cumulative total face weights in an array, where weight index
  // corresponds to face index.


  this.distribution = new Float32List( positionAttribute.count ~/ 3 );
  num cumulativeTotal = 0;

  for ( var i = 0; i < faceWeights.length; i ++ ) {

    cumulativeTotal += faceWeights[ i ];
    this.distribution![ i ] = cumulativeTotal.toDouble();

  }

  return this;

}