Document geometry state over CultMesh
This commit is contained in:
parent
ff7e6cf30f
commit
d8d0c4c8a0
2 changed files with 49 additions and 0 deletions
|
|
@ -14,3 +14,51 @@ The package is deliberately substrate-shaped:
|
|||
the xeno boundary, but the live machine eats and emits typed CultCache
|
||||
documents.
|
||||
|
||||
## Runtime Path
|
||||
|
||||
`vg-csg` emits domain documents, selected-cut manifests, and chunk artifacts as
|
||||
MessagePack CultCache documents. A Unity runtime, local worker, or remote
|
||||
geometry process should receive the same records through CultMesh/CultNet and
|
||||
read them back as `CultGeometry*` types.
|
||||
|
||||
```csharp
|
||||
using GameCult.Caching;
|
||||
using GameCult.Geometry;
|
||||
using GameCult.Mesh;
|
||||
using GameCult.Networking;
|
||||
|
||||
var geometryDocuments = new CultNetDocumentRegistry(CultDocumentRegistry.Shared)
|
||||
.Register(CultNetDocumentBinding.ForDocument<CultGeometryDomainDocument>())
|
||||
.Register(CultNetDocumentBinding.ForDocument<CultGeometryBuildRequest>())
|
||||
.Register(CultNetDocumentBinding.ForDocument<CultGeometrySelectedCutManifest>())
|
||||
.Register(CultNetDocumentBinding.ForDocument<CultGeometryChunkArtifact>());
|
||||
|
||||
using var node = await CultMesh.CreateNodeAsync("ragnarok-geometry.ccmp", new CultMeshNodeOptions
|
||||
{
|
||||
DatabaseOptions = new CultNetDatabaseOptions
|
||||
{
|
||||
RuntimeId = "unity-runtime",
|
||||
DocumentRegistry = geometryDocuments
|
||||
}
|
||||
});
|
||||
|
||||
using var chunks = node.Database
|
||||
.Watch<CultGeometryChunkArtifact>()
|
||||
.Subscribe(change => ApplyChunk(change.Document));
|
||||
```
|
||||
|
||||
The record key is part of the contract. Rust and C# must compute the same key
|
||||
for the same geometry record, so stable fingerprints use the Rust canonical
|
||||
field order and invariant float text. If this drifts, the same chunk becomes two
|
||||
different chunks depending on which runtime touched it first. That is not a
|
||||
cache miss; that is split-brain geometry.
|
||||
|
||||
## Documents
|
||||
|
||||
- `CultGeometryDomainDocument`: one hierarchical domain tree, suitable for
|
||||
Ragnarok/Fensalir-style feature DSL output.
|
||||
- `CultGeometryBuildRequest`: one LOD/frustum/budget request for workers.
|
||||
- `CultGeometrySelectedCutManifest`: the selected domain cut, deferred children,
|
||||
fallback rows, and diagnostic contribution rows.
|
||||
- `CultGeometryChunkArtifact`: render mesh, optional collider mesh, source
|
||||
domain/claim identities, build counters, and transition clipping seed.
|
||||
|
|
|
|||
Loading…
Reference in a new issue