WedgeGeometry function

GeometryBuilder WedgeGeometry({
  1. double x = 1.0,
  2. double y = 1.0,
  3. double z = 1.0,
  4. double uMin = 0.0,
  5. double uMax = 1.0,
  6. double vMin = 0.0,
  7. double vMax = 1.0,
  8. bool computeNormals = true,
})

A Wedge is the lower part of a cube that was cut in half through the plane: (-x, y, -z) (-x, y, z), (x, -y, -z), (x, -y, z)

Implementation

GeometryBuilder WedgeGeometry(
    {double x = 1.0,
    double y = 1.0,
    double z = 1.0,
    double uMin = 0.0,
    double uMax = 1.0,
    double vMin = 0.0,
    double vMax = 1.0,
    bool computeNormals = true}) {
  List<VM.Vector3> vertices3 = [
    // Front face3
    VM.Vector3(-x, -y, z),
    VM.Vector3(x, -y, z),
    VM.Vector3(-x, y, z),

    // Back face3
    VM.Vector3(-x, -y, -z),
    VM.Vector3(-x, y, -z),
    VM.Vector3(x, -y, -z),
  ];

  List<VM.Vector3> vertices4 = [
    // Front face4
    // Top/Right diagonal face
    VM.Vector3(-x, y, -z),
    VM.Vector3(-x, y, z),
    VM.Vector3(x, -y, z),
    VM.Vector3(x, -y, -z),

    // Bottom face
    VM.Vector3(x, -y, z),
    VM.Vector3(-x, -y, z),
    VM.Vector3(-x, -y, -z),
    VM.Vector3(x, -y, -z),

    // Left face
    VM.Vector3(-x, -y, -z),
    VM.Vector3(-x, -y, z),
    VM.Vector3(-x, y, z),
    VM.Vector3(-x, y, -z)
  ];

  List<VM.Vector2> uvs3 = [
    // Front face
    VM.Vector2(uMin, vMin),
    VM.Vector2(uMax, vMin),
    VM.Vector2(uMax, vMax),

    // Back face
    VM.Vector2(uMax, vMin),
    VM.Vector2(uMax, vMax),
    VM.Vector2(uMin, vMax),
  ];

  List<VM.Vector2> uvs4 = [
    // Top/Right diagonal face
    VM.Vector2(uMin, vMax),
    VM.Vector2(uMin, vMin),
    VM.Vector2(uMax, vMin),
    VM.Vector2(uMax, vMax),

    // Bottom face
    VM.Vector2(uMax, vMax),
    VM.Vector2(uMin, vMax),
    VM.Vector2(uMin, vMin),
    VM.Vector2(uMax, vMin),

    // Left face
    VM.Vector2(uMin, vMin),
    VM.Vector2(uMax, vMin),
    VM.Vector2(uMax, vMax),
    VM.Vector2(uMin, vMax)
  ];

  GeometryBuilder gb = GeometryBuilder();
  gb.EnableAttribute(aTexUV);
  gb.EnableAttribute(aNormal);

  gb.AddFaces3(2);
  gb.AddVertices(vertices3);
  gb.AddAttributesVector2(aTexUV, uvs3);

  gb.AddFaces4(3);
  gb.AddVertices(vertices4);
  gb.AddAttributesVector2(aTexUV, uvs4);

  if (computeNormals) gb.GenerateNormalsAssumingTriangleMode();
  return gb;
}