#pragma once #include "FluidSim/ScenarioSnapshot.hpp" #include "FluidSim/Desktop/OrbitCamera.hpp" #include #include namespace fluidsim::port::desktop { // Visualization consumes snapshots only; it never accesses mutable solver state. class EngineRenderer3D { public: EngineRenderer3D(); ~EngineRenderer3D(); EngineRenderer3D(const EngineRenderer3D&)=delete; EngineRenderer3D& operator=(const EngineRenderer3D&)=delete; void draw(sf::RenderWindow&,const ScenarioSnapshot&,sf::FloatRect,const OrbitCamera&); private: struct Impl; std::unique_ptr impl_; }; }