Allolib  1.0
C++ Components For Interactive Multimedia
al_SimulationDomain.hpp
1 #ifndef SIMULATIONDOMAIN_H
2 #define SIMULATIONDOMAIN_H
3 
4 #include <cassert>
5 #include <functional>
6 #include <iostream>
7 #include <memory>
8 #include <mutex>
9 #include <stack>
10 #include <vector>
11 
12 #include "al/app/al_ComputationDomain.hpp"
13 
14 namespace al {
15 
22 public:
23  virtual bool tick() override;
24 
25  void disableProcessingCallback();
26  std::function<void(double dt)> simulationFunction = [](double) {
27  }; // function to be called in onAnimate()
28 
29 private:
30  bool mUseCallback{true};
31 };
32 
33 // -------------
34 
38 template <class TSharedState>
40 public:
41  TSharedState &state() { return *mState; }
42 
43  std::shared_ptr<TSharedState> statePtr() { return mState; }
44 
45 protected:
46  std::shared_ptr<TSharedState> mState{new TSharedState};
47 };
48 
49 } // namespace al
50 
51 #endif // SIMULATIONDOMAIN
Basic simulation domain providing a simulationFunction.
virtual bool tick() override
Execute a pass of the domain.
Definition: al_App.hpp:23