TazGraph Project v0.1.0
Loading...
Searching...
No Matches
AppInterface.h
1#pragma once
2
3#include "../../pch.h"
4
5#include "../InputManager/InputManager.h"
6#include "../Window/Window.h"
7
8#include "SceneList.h"
9#include "../BaseFPSLimiter/BaseFPSLimiter.h"
10
11#include "../AudioEngine/AudioEngine.h"
12
13#include "../Threader/Threader.h"
14#include "../Threader/RenderCommandQueue.h"
15
16#define BUFFERS_NO 2
17
18
19
21public:
22 AppInterface(int threadCount, int msaa_samples, std::string openFile,
23 double initialTimestamp,
24 int initialStep,
25 bool usePython,
26 std::array<float, 4> bg,
27 bool useGrid);
28 virtual ~AppInterface();
29
30 void run();
31
32 void enqueueRenderCommand(std::function<void()> cmd);
33 void waitForRenderCommand();
34
35 void waitForRenderThreadExit();
36
37 void RenderThreadFunc();
38 void exitSimulator();
39
40 virtual void onInit() = 0;
41 virtual void addScenes() = 0;
42 virtual void onExit() = 0;
43
44 void onSDLEvent(SDL_Event& evnt);
45
46 InputManager _inputManager;
48
49 BaseFPSLimiter& getFPSLimiter() { return _limiter; }
50 AudioEngine& getAudioEngine() { return _audioEngine; }
51
52 Threader threadPool;
53 int MSAA_samples;
54 bool useMSAA = false;
55 std::string openFile;
56 double initialTimestamp;
57 int initialStep;
58 bool usePython = false;
59 std::array<float, 4> backgroundColor;
60 bool useGrid = false;
61
62 std::condition_variable initCommandCV;
63
64 RenderCommandQueue queues[BUFFERS_NO];
65 std::atomic<int> activeIndex = 0;
66
67 RenderCommandQueue initQueue;
68 std::mutex initMutex;
69 std::condition_variable initCV;
70 std::atomic<bool> initCommandReady{ false };
71 std::atomic<bool> initCommandComplete{ false };
72
73 std::vector<SDL_Event> imguiEvents;
74 std::mutex imguiEventsMutex;
75
76 ResourceManager resourceManager;
77
78 void renderBatch(
79 const Taz::GECSRenderBatch& batch,
80 Taz::FrameRenderData& frameData,
81 ICamera& camera
82 );
83
84 void drawLineBatch(
85 const Taz::GECSRenderBatch& batch,
86 Taz::FrameRenderData& frameData,
87 ICamera& camera
88 );
89 void drawPlaneColorBatch(
90 const Taz::GECSRenderBatch& batch,
91 Taz::FrameRenderData& frameData,
92 ICamera& camera
93 );
94 void drawPlaneModelBatch(
95 const Taz::GECSRenderBatch& batch,
96 Taz::FrameRenderData& frameData,
97 ICamera& camera
98 );
99 void drawLightBatch(
100 const Taz::GECSRenderBatch& batch,
101 Taz::FrameRenderData& frameData,
102 ICamera& camera
103 );
104
105 void drawBatch(const std::vector<Entity*>& entities, LineRenderer& batch);
106 void drawBatch(const std::vector<Entity*>& entities, PlaneColorRenderer& batch);
107 void drawBatch(const std::vector<Entity*>& entities, PlaneModelRenderer& batch);
108 void drawBatch(const std::vector<Entity*>& entities, LightRenderer& batch);
109
110 void prepareBatch(Taz::GECSRenderBatch& batch, Taz::FrameRenderData& frameData);
111
112 void prepareLineBatch(Taz::GECSRenderBatch& batch, Taz::FrameRenderData& frameData);
113 void preparePlaneColorBatch(Taz::GECSRenderBatch& batch, Taz::FrameRenderData& frameData);
114 void preparePlaneModelBatch(Taz::GECSRenderBatch& batch, Taz::FrameRenderData& frameData);
115 void prepareLightBatch(Taz::GECSRenderBatch& batch, Taz::FrameRenderData& frameData);
116
117
118protected:
119 virtual void checkInput();
120 virtual void update(float deltaTime);
121
122 virtual void prepareDraw(int index);
123 virtual void renderDraw(int index);
124
125 virtual void updateUI(float deltaTime);
126 virtual void drawUI();
127
128 void disposeRenderers(int index);
129
130 virtual void swapBuffer();
131
132 bool init();
133 void initRenderers();
134 bool initSystems();
135
136 BaseFPSLimiter _limiter;
137 AudioEngine _audioEngine;
138
139 std::unique_ptr<SceneList> _sceneList = nullptr;
140 bool _isRunning = false;
141
142 const float SCALE_SPEED = 0.1f;
143
144 std::thread renderThread;
145};
Definition AppInterface.h:20
void run()
Definition AppInterface.cpp:41
Definition AudioEngine.h:32
Definition BaseFPSLimiter.h:5
Definition ICamera.h:10
Definition InputManager.h:5
Definition LightRenderer.h:15
Definition LineRenderer.h:6
Definition PlaneColorRenderer.h:14
Definition PlaneModelRenderer.h:15
Definition ResourceManager.h:9
Definition Window.h:12
Definition RenderCommandQueue.h:6
Definition DataManager.h:15
Definition DataManager.h:11
Definition Threader.h:84