PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
application_run_internal.h
1#pragma once
2
3#include "pixelbullet/time/duration.h"
4
5#include <chrono>
6#include <functional>
7
8namespace pixelbullet
9{
11class UiFrameLayer;
12} // namespace pixelbullet
13
14namespace pixelbullet::application_internal
15{
16enum class PrepareFrameResult
17{
18 Skipped,
19 Rebuilt,
20 Ready
21};
22
23enum class RenderFrameResult
24{
25 Skipped,
26 Rendered
27};
28
29enum class RunLoopResult
30{
31 Completed,
32 SmokeSucceeded,
33 SmokeTimedOut
34};
35
37{
38 std::function<float()> get_time_seconds;
39 std::function<std::chrono::steady_clock::time_point()> get_steady_now;
40 std::function<void()> update_resource_cache;
41 std::function<PrepareFrameResult()> prepare_frame;
42 std::function<RenderFrameResult()> render_prepared_frame;
43 std::function<void()> poll_window;
44};
45
46RunLoopResult RunApplicationLoop(ApplicationState& state, UiFrameLayer* ui_frame_layer, const RunLoopBindings& bindings);
47RunLoopResult RunApplicationLoop(ApplicationState& state, UiFrameLayer* ui_frame_layer);
48} // namespace pixelbullet::application_internal
Definition application_internal.h:19
Definition layer.h:17
Definition application_run_internal.h:37