feat(streaming): shadow-publish flat collision assets
Carry one immutable prepared collision closure with each accepted near-tier generation and install graph plus flat views through the same retained publication receipt. Apply the same strict package-only rule to live entities, add exact sampled graph-authoritative comparison artifacts and lifecycle counters, and prove cancellation, demotion, rehydrate, revisit, teardown, reconnect, and the nine-stop route with 14,064 zero-mismatch samples. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
f7ff9f4eea
commit
d9446030e6
32 changed files with 2777 additions and 92 deletions
|
|
@ -30,6 +30,7 @@ internal sealed record ContentEffectsAudioResult(
|
|||
MagicCatalog MagicCatalog,
|
||||
IAnimationLoader AnimationLoader,
|
||||
LiveEntityCollisionBuilder CollisionBuilder,
|
||||
LiveCollisionAssetPublisher CollisionAssets,
|
||||
EmitterDescRegistry EmitterRegistry,
|
||||
ParticleSystem ParticleSystem,
|
||||
ParticleHookSink ParticleSink,
|
||||
|
|
@ -95,6 +96,9 @@ internal interface IContentEffectsAudioCompositionFactory
|
|||
IDatReaderWriter dats,
|
||||
IAnimationLoader animationLoader,
|
||||
bool dumpMotionEnabled);
|
||||
LiveCollisionAssetPublisher CreateLiveCollisionAssetPublisher(
|
||||
PhysicsDataCache physicsData,
|
||||
IPreparedAssetSource preparedAssets);
|
||||
EmitterDescRegistry CreateEmitterRegistry(IDatReaderWriter dats);
|
||||
ParticleSystem CreateParticleSystem(EmitterDescRegistry emitters);
|
||||
ParticleHookSink CreateParticleSink(
|
||||
|
|
@ -165,6 +169,15 @@ internal sealed class RetailContentEffectsAudioCompositionFactory
|
|||
animationLoader,
|
||||
dumpMotionEnabled));
|
||||
|
||||
public LiveCollisionAssetPublisher CreateLiveCollisionAssetPublisher(
|
||||
PhysicsDataCache physicsData,
|
||||
IPreparedAssetSource preparedAssets) =>
|
||||
new(
|
||||
physicsData,
|
||||
preparedAssets as IPreparedCollisionSource
|
||||
?? throw new NotSupportedException(
|
||||
"Production prepared assets must expose collision data."));
|
||||
|
||||
public EmitterDescRegistry CreateEmitterRegistry(IDatReaderWriter dats) =>
|
||||
new(dats);
|
||||
|
||||
|
|
@ -332,6 +345,10 @@ internal sealed class ContentEffectsAudioCompositionPhase :
|
|||
_dependencies.DumpMotionEnabled);
|
||||
_publication.PublishLiveEntityCollisionBuilder(collision);
|
||||
Fault(ContentEffectsAudioCompositionPoint.CollisionBuilderPublished);
|
||||
LiveCollisionAssetPublisher collisionAssets =
|
||||
_factory.CreateLiveCollisionAssetPublisher(
|
||||
_dependencies.PhysicsDataCache,
|
||||
preparedAssets);
|
||||
|
||||
EmitterDescRegistry emitters = _factory.CreateEmitterRegistry(dats);
|
||||
_publication.PublishEmitterRegistry(emitters);
|
||||
|
|
@ -403,6 +420,7 @@ internal sealed class ContentEffectsAudioCompositionPhase :
|
|||
magic,
|
||||
animations,
|
||||
collision,
|
||||
collisionAssets,
|
||||
emitters,
|
||||
particles,
|
||||
particleSink,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue