solidParts property
One piece when the outline is convex, else one per convex part of it.
Implementation
@override
List<SolidPart> get solidParts {
final outline = _outline;
if (outline.length < 3) return const [];
final hy = Primitive3D.size(height) / 2;
SolidHull hull(Iterable<(double, double)> corners) => SolidHull(
Float32List.fromList([
for (final (x, z) in corners) ...[x, -hy, z, x, hy, z],
]),
);
if (Outline.isConvex(outline)) return [hull(outline)];
return [
for (final part in Outline.convexParts(
outline,
Outline.triangulate(outline),
))
hull([for (final i in part) outline[i]]),
];
}