Allolib  1.0
C++ Components For Interactive Multimedia
al_AppRecorder.hpp
1 #ifndef AL_APPRECORDER_H
2 #define AL_APPRECORDER_H
3 
4 // Author: Andres Cabrera and Lance Putnam
5 
6 #include "al/app/al_App.hpp"
7 #include "al/app/al_AudioDomain.hpp"
8 #include "al/app/al_ComputationDomain.hpp"
9 #include "al/app/al_OpenGLGraphicsDomain.hpp"
10 #include "al/app/al_SimulationDomain.hpp"
11 #include "al/io/al_File.hpp"
12 
17 namespace al {
18 
20 public:
21  // Domain functions
22  // bool init(ComputationDomain *parent = nullptr) override {return true;}
23  bool tick() override {
24  mFreeze = true;
25  while (mFreeze) {
26  al_sleep(0.25);
27  }
28  return true;
29  }
30  // bool cleanup(ComputationDomain *parent = nullptr) override;
31 
32  bool mFreeze{true};
33 };
34 
39 class AppRecorder {
40 public:
41  AppRecorder() {}
42 
43  ~AppRecorder() { stopRecording(); }
44 
45  void connectApp(App *app) {
46  mGraphicsDomain = app->graphicsDomain();
47  mAudioDomain = app->audioDomain();
48  mSimulationDomain = app->simulationDomain();
49  mWindowDomain = app->defaultWindowDomain();
50  }
51 
52  void startRecordingOffline(double totalTime = 120.0);
53 
54  // void startRecordingRT() {}
55 
56  void stopRecording() { mRunning = false; }
57 
58 private:
59  std::shared_ptr<OpenGLGraphicsDomain> mGraphicsDomain;
60  std::shared_ptr<GLFWOpenGLWindowDomain> mWindowDomain;
61  std::shared_ptr<AudioDomain> mAudioDomain;
62  std::shared_ptr<SimulationDomain> mSimulationDomain;
63 
64  bool mRunning;
65 };
66 
67 } // namespace al
68 
69 #endif // AL_APPRECORDER_H
Simple App class.
Definition: al_App.hpp:29
Simple App class.
bool tick() override
Execute a pass of the domain.
Definition: al_App.hpp:23
void al_sleep(al_sec dt)
Sleep for an interval of seconds.