Improve physical geometry, fluid solvers, audio, and profiling
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
#include "FluidSim/DynoCurve.hpp"
|
||||
#include "FluidSim/Desktop/PedalControl.hpp"
|
||||
#include "FluidSim/Desktop/EngineRenderer3D.hpp"
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <SFML/Graphics.hpp>
|
||||
namespace fluidsim::port::desktop {
|
||||
struct PlaybackInfo {
|
||||
@@ -24,8 +26,17 @@ public:
|
||||
bool handle_event(const sf::Event&,sf::Vector2u);
|
||||
AudioListener listener(const ScenarioSnapshot&,sf::Vector2u);
|
||||
void draw(sf::RenderWindow&,const sf::Font*,const ScenarioSnapshot&,const PlaybackInfo&);
|
||||
void configure_resolution(float density) { resolution_=density; }
|
||||
std::optional<float> take_resolution_request() {auto value=resolution_request_;resolution_request_.reset();return value;}
|
||||
void resolution_started() {resolution_busy_=true;resolution_status_="Building mesh...";}
|
||||
void resolution_finished(float density,const std::string& message) {resolution_=density;resolution_busy_=false;resolution_status_=message;}
|
||||
static std::array<sf::FloatRect,2> resolution_buttons(sf::Vector2u size);
|
||||
private:
|
||||
DynoCurve dyno_;
|
||||
float resolution_{20};
|
||||
bool resolution_busy_{};
|
||||
std::optional<float> resolution_request_;
|
||||
std::string resolution_status_;
|
||||
EngineRenderer3D renderer_;
|
||||
OrbitCamera camera_;
|
||||
bool three_d_{true},camera_fitted_{},pan_drag_{},pedal_drag_{};
|
||||
@@ -34,5 +45,8 @@ private:
|
||||
sf::Vector2i previous_mouse_{};
|
||||
bool dragging_{};
|
||||
float zoom_{1};
|
||||
float camera_aspect_{};
|
||||
WorkspaceLayout workspace_layout(sf::Vector2u size) const;
|
||||
void fit_camera(float aspect,const ScenarioSnapshot&);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user