decodeMatrix4 static method

Matrix4? decodeMatrix4(
  1. dynamic value, {
  2. bool validate = true,
})

Decodes the value to a Matrix4. This requires the value to be an Iterable of double with exactly 16 elements in it.

The array is expected to be in the following format:

[
  x0,
  x1,
  x2,
  x3,
  y0,
  y1,
  y2,
  y3,
  z0,
  z1,
  z2,
  z3,
  w0,
  w1,
  w2,
  w3
]

Implementation

static Matrix4? decodeMatrix4(
  dynamic value, {
  bool validate = true,
}) {
  Matrix4? result;

  if (value is Matrix4) {
    result = value;
  } else {
    if (value is Iterable) {
      assert(SchemaValidator.validate(
        schemaId: '$_baseSchemaUrl/matrix4',
        value: value,
        validate: validate,
      ));
      var list = value.toList();
      result = Matrix4(
        JsonClass.parseDouble(list[0])!,
        JsonClass.parseDouble(list[1])!,
        JsonClass.parseDouble(list[2])!,
        JsonClass.parseDouble(list[3])!,
        JsonClass.parseDouble(list[4])!,
        JsonClass.parseDouble(list[5])!,
        JsonClass.parseDouble(list[6])!,
        JsonClass.parseDouble(list[7])!,
        JsonClass.parseDouble(list[8])!,
        JsonClass.parseDouble(list[9])!,
        JsonClass.parseDouble(list[10])!,
        JsonClass.parseDouble(list[11])!,
        JsonClass.parseDouble(list[12])!,
        JsonClass.parseDouble(list[13])!,
        JsonClass.parseDouble(list[14])!,
        JsonClass.parseDouble(list[15])!,
      );
    }
  }

  return result;
}