fromFlatbuffer static method

Skin fromFlatbuffer(
  1. Skin skin,
  2. List<Node> sceneNodes
)

Implementation

static Skin fromFlatbuffer(fb.Skin skin, List<Node> sceneNodes) {
  if (skin.joints == null ||
      skin.inverseBindMatrices == null ||
      skin.joints!.length != skin.inverseBindMatrices!.length) {
    throw Exception('Skin data is missing joints or bind matrices.');
  }

  Skin result = Skin();
  for (int jointIndex in skin.joints!) {
    if (jointIndex < 0 || jointIndex > sceneNodes.length) {
      throw Exception('Skin join index out of range');
    }
    sceneNodes[jointIndex].isJoint = true;
    result.joints.add(sceneNodes[jointIndex]);
  }

  for (
    int matrixIndex = 0;
    matrixIndex < skin.inverseBindMatrices!.length;
    matrixIndex++
  ) {
    final matrix = skin.inverseBindMatrices![matrixIndex].toMatrix4();

    result.inverseBindMatrices.add(matrix);
  }

  return result;
}