posnormtriv method

void posnormtriv(
  1. dynamic pos,
  2. dynamic norm,
  3. dynamic colors,
  4. int o1,
  5. int o2,
  6. int o3,
)

Implementation

void posnormtriv( pos, norm, colors,int o1,int o2,int o3 ) {
  final c = count! * 3;

  // positions

  positionArray[ c + 0 ] = pos[ o1 ];
  positionArray[ c + 1 ] = pos[ o1 + 1 ];
  positionArray[ c + 2 ] = pos[ o1 + 2 ];

  positionArray[ c + 3 ] = pos[ o2 ];
  positionArray[ c + 4 ] = pos[ o2 + 1 ];
  positionArray[ c + 5 ] = pos[ o2 + 2 ];

  positionArray[ c + 6 ] = pos[ o3 ];
  positionArray[ c + 7 ] = pos[ o3 + 1 ];
  positionArray[ c + 8 ] = pos[ o3 + 2 ];

  // normals

  if (material?.flatShading == true){
    final nx = ( norm[ o1 + 0 ] + norm[ o2 + 0 ] + norm[ o3 + 0 ] ) / 3;
    final ny = ( norm[ o1 + 1 ] + norm[ o2 + 1 ] + norm[ o3 + 1 ] ) / 3;
    final nz = ( norm[ o1 + 2 ] + norm[ o2 + 2 ] + norm[ o3 + 2 ] ) / 3;

    normalArray[ c + 0 ] = nx;
    normalArray[ c + 1 ] = ny;
    normalArray[ c + 2 ] = nz;

    normalArray[ c + 3 ] = nx;
    normalArray[ c + 4 ] = ny;
    normalArray[ c + 5 ] = nz;

    normalArray[ c + 6 ] = nx;
    normalArray[ c + 7 ] = ny;
    normalArray[ c + 8 ] = nz;

  }
  else {
    normalArray[ c + 0 ] = norm[ o1 + 0 ];
    normalArray[ c + 1 ] = norm[ o1 + 1 ];
    normalArray[ c + 2 ] = norm[ o1 + 2 ];

    normalArray[ c + 3 ] = norm[ o2 + 0 ];
    normalArray[ c + 4 ] = norm[ o2 + 1 ];
    normalArray[ c + 5 ] = norm[ o2 + 2 ];

    normalArray[ c + 6 ] = norm[ o3 + 0 ];
    normalArray[ c + 7 ] = norm[ o3 + 1 ];
    normalArray[ c + 8 ] = norm[ o3 + 2 ];
  }

  // uvs

  if ( enableUvs ) {
    final d = count! * 2;

    uvArray[ d + 0 ] = pos[ o1 + 0 ];
    uvArray[ d + 1 ] = pos[ o1 + 2 ];

    uvArray[ d + 2 ] = pos[ o2 + 0 ];
    uvArray[ d + 3 ] = pos[ o2 + 2 ];

    uvArray[ d + 4 ] = pos[ o3 + 0 ];
    uvArray[ d + 5 ] = pos[ o3 + 2 ];

  }

  // colors

  if (enableColors) {
    colorArray[ c + 0 ] = colors[ o1 + 0 ];
    colorArray[ c + 1 ] = colors[ o1 + 1 ];
    colorArray[ c + 2 ] = colors[ o1 + 2 ];

    colorArray[ c + 3 ] = colors[ o2 + 0 ];
    colorArray[ c + 4 ] = colors[ o2 + 1 ];
    colorArray[ c + 5 ] = colors[ o2 + 2 ];

    colorArray[ c + 6 ] = colors[ o3 + 0 ];
    colorArray[ c + 7 ] = colors[ o3 + 1 ];
    colorArray[ c + 8 ] = colors[ o3 + 2 ];
  }

  count = count!+3;
}