PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
application_run_internal.h
1#pragma once
2
3#include "pixelbullet/application/layer.h"
4#include "pixelbullet/time/duration.h"
5
6#include <chrono>
7#include <functional>
8
9namespace pixelbullet
10{
12class UiFrameLayer;
13} // namespace pixelbullet
14
15namespace pixelbullet::application_internal
16{
17enum class PrepareFrameResult
18{
19 Skipped,
20 Rebuilt,
21 Ready
22};
23
24enum class RenderFrameResult
25{
26 Skipped,
27 Rendered
28};
29
30enum class RunLoopResult
31{
32 Completed,
33 SmokeSucceeded,
34 SmokeTimedOut
35};
36
38{
39 bool focused = true;
40 std::uint32_t window_move_callback_count = 0;
41 std::uint32_t window_resize_callback_count = 0;
42 std::uint32_t focus_callback_count = 0;
43
44 [[nodiscard]] constexpr bool HasActivity() const noexcept
45 {
46 return window_move_callback_count != 0 || window_resize_callback_count != 0 || focus_callback_count != 0;
47 }
48};
49
51{
52 std::function<double()> get_time_seconds;
53 std::function<std::chrono::steady_clock::time_point()> get_steady_now;
54 std::function<std::chrono::steady_clock::time_point()> get_timing_now;
55 std::function<void()> update_graphics_resource_cache;
56 std::function<PrepareFrameResult()> prepare_frame;
57 std::function<RenderFrameResult()> render_prepared_frame;
58 std::function<FrameTimingSample()> get_graphics_frame_timing;
59 std::function<RunLoopPlatformActivity()> get_platform_activity;
60 std::function<void()> begin_window_frame;
61 std::function<void()> poll_window_events;
62 std::function<void(double)> wait_window_events;
63};
64
65RunLoopResult RunApplicationLoop(ApplicationState& state, UiFrameLayer* ui_frame_layer, const RunLoopBindings& bindings);
66RunLoopResult RunApplicationLoop(ApplicationState& state, UiFrameLayer* ui_frame_layer);
67} // namespace pixelbullet::application_internal
Definition application_internal.h:23
Definition layer.h:50
Definition layer.h:19
Definition application_run_internal.h:51
Definition application_run_internal.h:38