addFace method

void addFace(
  1. String a,
  2. String b,
  3. String c,
  4. String? ua,
  5. String? ub,
  6. String? uc,
  7. String? na,
  8. String? nb,
  9. String? nc,
)

Implementation

void addFace(String a, String b, String c, String? ua, String? ub, String? uc, String? na, String? nb, String? nc) {
  final vLen = vertices.length;

  int ia = parseVertexIndex(a, vLen);
  int ib = parseVertexIndex(b, vLen);
  int ic = parseVertexIndex(c, vLen);

  addVertex(ia, ib, ic);
  addColor(ia, ib, ic);

  // normals

  if (na != null && na != '') {
    final nLen = normals.length;

    ia = parseNormalIndex(na, nLen);
    ib = parseNormalIndex(nb!, nLen);
    ic = parseNormalIndex(nc!, nLen);

    addNormal(ia, ib, ic);
  }
  else {
    addFaceNormal(ia, ib, ic);
  }

  // uvs

  if (ua != null && ua != '') {
    final uvLen = uvs.length;

    ia = parseUVIndex(ua, uvLen);
    ib = parseUVIndex(ub!, uvLen);
    ic = parseUVIndex(uc!, uvLen);

    addUV(ia, ib, ic);

    object!.geometry["hasUVIndices"] = true;
  }
  else {
    // add placeholder values (for inconsistent face definitions)
    addDefaultUV();
  }
}