22#ifndef ANIMATIONCONTROLLER_H
23#define ANIMATIONCONTROLLER_H
79 [[nodiscard]] QList<SWMMResultsLayer *>
allLayers()
const;
83 [[nodiscard]]
bool isPlaying()
const {
return m_playing; }
84 [[nodiscard]]
double speed()
const {
return m_speed; }
92 [[nodiscard]] qint64
windowMs()
const {
return m_windowMs; }
120 [[nodiscard]]
bool looping()
const {
return m_loop; }
145 void onPrimaryPeriodChanged(
int step);
146 void onPrimaryTotalStepsChanged(
int total);
149 void onFallback2DPeriodChanged(
int step);
150 void onFallback2DTimeChanged(
const QDateTime &dt);
151 void onFallback2DRangeChanged(
int lo,
int hi);
154 void updateTimerInterval();
155 void connectPrimary();
156 void disconnectPrimary();
157 void connectFallback2D();
158 void disconnectFallback2D();
161 [[nodiscard]]
bool hasDriver()
const;
163 [[nodiscard]]
int driverTotalSteps()
const;
165 [[nodiscard]]
int driverCurrentStep()
const;
167 void driverSetStep(
int step);
172 [[nodiscard]]
bool driverIsLive()
const;
180 void effectiveStepRange(
int &outMin,
int &outMax)
const;
182 QPointer<SWMMResultsLayer> m_primaryLayer;
183 QList<QPointer<SWMMResultsLayer>> m_secondaryLayers;
184 QPointer<SWMM2DResultsLayer> m_fallback2D;
185 QTimer *m_timer =
nullptr;
186 bool m_playing =
false;
188 double m_speed = 1.0;
189 qint64 m_windowMs = 0;
196 int m_stepsPerTick = 1;
204 static constexpr int kMinIntervalMs = 50;
205 static constexpr int kDefaultStepMs = 200;
Central coordinator for result-layer time-stepping and playback.
Definition animationcontroller.h:43
void setPrimaryLayer(SWMMResultsLayer *layer)
Set the primary (authoritative) results layer.
Definition animationcontroller.cpp:37
void pause()
Definition animationcontroller.cpp:356
void currentPeriodChanged(int period)
void setWindowMs(qint64 ms)
Definition animationcontroller.cpp:245
void play()
Definition animationcontroller.cpp:331
QDateTime driverEndTime() const
Definition animationcontroller.cpp:227
bool looping() const
Definition animationcontroller.h:120
void seekToLast()
Definition animationcontroller.cpp:400
void windowChanged(qint64 windowMs)
void setFallback2DLayer(SWMM2DResultsLayer *layer)
Definition animationcontroller.cpp:113
void seekToPeriod(int period)
Definition animationcontroller.cpp:407
void seekToTime(const QDateTime &dt)
Definition animationcontroller.cpp:414
SWMM2DResultsLayer * fallback2DLayer() const
Definition animationcontroller.h:70
void playStateChanged(bool playing)
qint64 windowMs() const
Definition animationcontroller.h:92
bool isPlaying() const
Definition animationcontroller.h:83
void setSpeed(double speed)
Set playback speed multiplier (0.25 / 0.5 / 1 / 2 / 4 / 8).
Definition animationcontroller.cpp:286
QDateTime driverStartTime() const
Definition animationcontroller.cpp:214
void stepForward()
Definition animationcontroller.cpp:372
void setLooping(bool on)
Definition animationcontroller.h:119
QList< SWMMResultsLayer * > allLayers() const
Definition animationcontroller.cpp:273
void stop()
Definition animationcontroller.cpp:366
void setWindowSec(double sec)
Definition animationcontroller.h:112
void currentTimeChanged(const QDateTime &dt)
~AnimationController() override
Definition animationcontroller.cpp:28
QDateTime currentDateTime() const
Definition animationcontroller.cpp:237
double speed() const
Definition animationcontroller.h:84
SWMMResultsLayer * primaryLayer() const
Definition animationcontroller.cpp:65
void primaryLayerChanged(SWMMResultsLayer *layer)
void stepBackward()
Definition animationcontroller.cpp:385
void removeSecondaryLayer(SWMMResultsLayer *layer)
Definition animationcontroller.cpp:263
void seekToFirst()
Definition animationcontroller.cpp:393
void totalPeriodsChanged(int total)
void addSecondaryLayer(SWMMResultsLayer *layer)
Definition animationcontroller.cpp:257
void clearSecondaryLayers()
Definition animationcontroller.cpp:268
Definition swmm2dresultslayer.h:550
Overlays time-stepped simulation results on the SWMM network geometry.
Definition swmmresultslayer.h:96
double step
Definition meshcellparams.cpp:28
QVector< int > parent
union-find
Definition pslgminsize.cpp:176