paint method

  1. @override
void paint(
  1. DiTreDiConfig config,
  2. DiTreDiController controller,
  3. PaintViewPort viewPort,
  4. Face3D model,
  5. Matrix4 matrix,
  6. int vertexIndex,
  7. Float32List zIndices,
  8. Int32List colors,
  9. Float32List vertices,
)
override

Fills the buffer with the Model3D data.

Implementation

@override
void paint(
    DiTreDiConfig config,
    DiTreDiController controller,
    PaintViewPort viewPort,
    Face3D model,
    Matrix4 matrix,
    int vertexIndex,
    Float32List zIndices,
    Int32List colors,
    Float32List vertices) {
  _t.copyFrom(model.triangle);
  matrix.perspectiveTransform(_t.point0);
  matrix.perspectiveTransform(_t.point1);
  matrix.perspectiveTransform(_t.point2);

  if (_shouldDraw(viewPort, _t)) {
    // z-index
    zIndices[vertexIndex ~/ 3] =
        (_t.point0.z + _t.point1.z + _t.point2.z) / 3;

    // color
    final originColor = _getFaceColor(model, config, controller, _t);
    colors[vertexIndex + 0] = originColor;
    colors[vertexIndex + 1] = originColor;
    colors[vertexIndex + 2] = originColor;
  } else {
    colors[vertexIndex + 0] = 0;
    colors[vertexIndex + 1] = 0;
    colors[vertexIndex + 2] = 0;
    _t.point0.setZero();
    _t.point1.setZero();
    _t.point2.setZero();
  }

  // vertex
  final pointIndex = vertexIndex * 2;
  vertices[pointIndex + 0] = _t.point0.x;
  vertices[pointIndex + 1] = _t.point0.y;
  vertices[pointIndex + 2] = _t.point1.x;
  vertices[pointIndex + 3] = _t.point1.y;
  vertices[pointIndex + 4] = _t.point2.x;
  vertices[pointIndex + 5] = _t.point2.y;
}