Repository navigation
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe change removes the WWSaveLoad library and related persistence interfaces from WWMath, WWAudio, and WW3D. Sound render-object definitions now store and serialize sound settings directly. W3DView’s sound-definition-library controls and loading path are removed, and tests cover sound-definition serialization. ChangesPersistence and build cleanup
Sound settings and tool updates
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~60 minutes Change: Refactor Suggested reviewers: Merge Risk: ⚪ Minimal · up to
|
[Medium impact] The PR appears safe to merge; no actionable defects or repository-rule violations were found.
|
…ect chunk Pins the bytes of W3D_CHUNK_SOUNDROBJ that W3DView saves and loads, so that the sound definition can move out of WWSaveLoad without changing the file format. The test executables link WWAudio for it.
…at created them SoundRenderObjClass::operator= (reached through Clone, for example when an HLOD is copied) and the W3DView Sound Edit dialog create a sound from a definition on the stack, and the sound kept that pointer. AudibleSoundClass::Play then read the destroyed definition to create a logical sound and to fire the display text callback. Neither has a receiver: no logical listener is ever created and no text callback is ever registered.
WWAudioClass created sounds by definition ID or name from DefinitionMgrClass, and nothing called these functions. W3DView filled DefinitionMgrClass from a Renegade definition database (.ddb) set in the Animated Sound Options dialog, and nothing read the loaded definitions. The dialog loses its Sound Preset Library Path field.
…ndRenderObjDefClass The W3D_CHUNK_SOUNDROBJ_DEFINITION chunk was written by AudibleSoundDefinitionClass, a WWSaveLoad DefinitionClass that remained only for this. SoundRenderObjDefClass now holds the sound settings and reads and writes the same bytes itself, including the ID and name in the base class chunk. AudibleSoundDefinitionClass is removed, and SoundRenderObjClass::Set_Sound takes the sound object.
…io, WWMath and WW3D2 RenderObjClass, the curves and the sounds derive from PersistClass and register persist factories, and the sound scene has save and load subsystems, but nothing ever saves or loads through them; the game saves through GameState and Xfer. This removes the PersistClass bases, the factories and the Save/Load functions they dispatch to, the persist chunk ID headers, the force links that only kept the factories linked, and the loading of lookup tables from files. It also removes the chunk save and load of the scene settings and of the AABTree and grid cull systems, which only Renegade's level saves called, and AABTreeSoundCullClass, which only implemented the AABTree cull system's save hooks and derives from a class that no longer exists.
Nothing includes or links WWSaveLoad anymore.
009cb94 to
6847fb3
Compare
Merge with Rebase
This change decouples and removes the legacy Renegade's WWSaveLoad library. It is split into several commits for clean separation of steps.
This library was an old Save format that is not used in Generals. Generals uses Xfer.
WWSaveLoad used chunkio (
ChunkLoadClass,ChunkSaveClass). W3D models use the same chunkio. But all that was removed is not related to W3D models.AI Use
This change was generated with collaboration of Claude Opus 5.5.
TODO