gz_waves: core - Part 1/4#882
Open
caguero wants to merge 5 commits into
Open
Conversation
… Eval facade Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Agüero <caguero@honurobotics.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Agüero <caguero@honurobotics.com>
GZ_WAVES_PARAM_TABLE is now the single source of truth for the WaveParameters fields. operator<< / operator>>, ParseSdf, and the set_parameters service ApplyParam all expand it, so adding a parameter means editing one list instead of four. Field order and string-quoting are guaranteed consistent between the stream operators. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Agüero <caguero@honurobotics.com>
cd5cbc6 to
9698e33
Compare
….md) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
9698e33 to
33bb4e8
Compare
Collaborator
Author
|
@bsb808 , as we discussed, added WAVES_DESIGN.md and AGENTS.md. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First of a series of patches that splits the wave-simulation work. This PR lands the engine-agnostic core that every later layer builds on.
Summary
IWaveField— the abstract wave-field interface (Elevation,Normal,ParticleVelocity,Jacobian,Update,SetParameters,Kind).CreateWaveSimulation,RegisterWaveEngineFactory); concrete engines register themselves from their own packages, so the core depends on none of them.WaveParameters— the shared input recipe.WavefieldECM component (+ serialization) — the channel on the world entity carrying the recipe and the liveshared_ptr<IWaveField>. Only the recipe is serialized; a replicated copy reconstructs its engine via thefactory.
Eval.hh/Eval.cc— the null-safe free-function query facade consumers use (falls back to still water when no engine is present). Bodies are out-of-line soIWaveFieldstays opaque to consumers; includes a newAdvance()helper so a consumer never has to deref the engine directly.WavesSystemBase— base class for the per-engine source plugins.The core ships only the contract — no consumers. Buoyancy and the water visual live in their own packages
gz_waves_buoyancy,gz_waves_rendering), each a downstream consumer of the wave field.