Skip to content

gz_waves: core - Part 1/4#882

Open
caguero wants to merge 5 commits into
vrx4from
caguero/waves-01-core
Open

gz_waves: core - Part 1/4#882
caguero wants to merge 5 commits into
vrx4from
caguero/waves-01-core

Conversation

@caguero

@caguero caguero commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

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).
  • Engine registry — an in-process token→factory map (CreateWaveSimulation, RegisterWaveEngineFactory); concrete engines register themselves from their own packages, so the core depends on none of them.
  • WaveParameters — the shared input recipe.
  • Wavefield ECM component (+ serialization) — the channel on the world entity carrying the recipe and the live shared_ptr<IWaveField>. Only the recipe is serialized; a replicated copy reconstructs its engine via the
    factory.
  • 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 so
  • IWaveField stays opaque to consumers; includes a new Advance() 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.

… Eval facade

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
@caguero caguero requested review from bsb808 and j-rivero June 18, 2026 18:54
caguero and others added 3 commits June 22, 2026 17:48
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>
….md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Carlos Aguero <caguero@honurobotics.com>
@caguero caguero force-pushed the caguero/waves-01-core branch from 9698e33 to 33bb4e8 Compare June 25, 2026 21:32
@caguero

caguero commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator Author

@bsb808 , as we discussed, added WAVES_DESIGN.md and AGENTS.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant