merge static method
parts as one geometry; null when there are none.
Implementation
static ModelGeometry? merge(List<ModelGeometry> parts) {
if (parts.isEmpty) return null;
if (parts.length == 1) return parts.single;
final positions = Float32List(
parts.fold(0, (n, p) => n + p.positions.length),
);
final indices = Uint32List(parts.fold(0, (n, p) => n + p.indices.length));
var vertexBase = 0, p = 0, i = 0;
for (final part in parts) {
positions.setAll(p, part.positions);
for (final index in part.indices) {
indices[i++] = index + vertexBase;
}
p += part.positions.length;
vertexBase += part.positions.length ~/ 3;
}
return ModelGeometry(positions, indices);
}