novolis-governance / imports-todo/internal-novolis-audit/raylib-obj-helpers-wave7b.md
Raylib — OBJ helpers (Wave 7b)
Policies that keep the org coherent
dotnetgovernancenovolis
What
Port minimal OBJ loading from Frank.GameEngine into novolis-raylib when the asset lane needs shared parsing:
| Source (Frank) | Target (Novolis) |
|---|---|
| `ObjHelper`, `ObjParser` | e.g. `Novolis.Raylib.Assets` or `Novolis.Raylib.Loaders` facet |
| Depends on | `Novolis.Math.Geometry` (`TriangleMesh`, optionally `Novolis.Math.Topology.Polygon`) |
Out of scope: Assimp, asset generator, embedded sample models (wave-7b-raylib-obj.md).
Why
- Multiple dogfood/rendering paths build meshes manually; OBJ is the lowest-friction interchange for art iteration.
- Parsing belongs next to Raylib host, not Simulation or Physics — aligns with gameengine-reference-policy.md.
- Prerequisite: Math geometry stable (post–BCL refactor publish wave).
How
- Prerequisite gate
- Complete math-bcl-refactor-publish-wave.md.
- New package or folder
- Prefer small packable project under
novolis-raylib/src/with PackageReference toNovolis.Math.Geometryonly.
- Port
- Strip GameObject/scene graph; output
TriangleMeshor positions/indices arrays. - TUnit tests: cube.obj, quad.obj, negative face index handling.
- Wire dogfood
- One sample in
novolis-dogfoodingloads.objvia package API.
- Registry
- Add package to novolis registry when published.
Status
Deferred until a Raylib app requires shared OBJ parsing (brief says “when geometry is stable”). Re-evaluate after Math GPR publish.
Acceptance
- No
Frank.*references; NuGet-only consumers build. - Raylib package does not reference Simulation or Rendering.