PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
layer.h
1#pragma once
2
3#include "pixelbullet/core/event.h"
4#include "pixelbullet/time/duration.h"
5
6#include <cstdint>
7#include <string>
8
9namespace pixelbullet
10{
11enum class FrameTimingCategory : std::uint8_t
12{
13 FocusedSteadyState,
14 PlatformActivity,
15 Suspended
16};
17
19{
20 FrameTimingCategory category = FrameTimingCategory::FocusedSteadyState;
21 bool presented = false;
22 bool successful_present_interval_valid = false;
23 bool swapchain_recreated = false;
24 std::uint32_t window_move_callback_count = 0;
25 std::uint32_t window_resize_callback_count = 0;
26 std::uint32_t focus_callback_count = 0;
27 double successful_present_interval_milliseconds = 0.0;
28 double application_loop_interval_milliseconds = 0.0;
29 double event_poll_and_input_milliseconds = 0.0;
30 double layer_update_milliseconds = 0.0;
31 double graphics_resource_update_milliseconds = 0.0;
32 double render_preparation_milliseconds = 0.0;
33 double swapchain_acquire_milliseconds = 0.0;
34 double queue_submission_milliseconds = 0.0;
35 double present_milliseconds = 0.0;
36 double fence_wait_milliseconds = 0.0;
37 double swapchain_recreation_milliseconds = 0.0;
38 double device_idle_wait_milliseconds = 0.0;
39
40 [[nodiscard]] constexpr bool operator==(const FrameTimingSample&) const noexcept = default;
41};
42
43enum class EventPhase
44{
45 Early,
46 Normal
47};
48
50{
51public:
52 virtual ~UiFrameLayer() = default;
53
54 virtual bool BeginUiFrame() = 0;
55 virtual void CancelUiFrame() = 0;
56};
57
58class Layer
59{
60public:
61 explicit Layer(const std::string& name = "layer");
62 virtual ~Layer() = default;
63
64 virtual void OnAttach()
65 {
66 }
67 virtual void OnDetach()
68 {
69 }
70 virtual void OnUpdate([[maybe_unused]] Duration ts)
71 {
72 }
73 virtual void OnUiFrame()
74 {
75 }
76 virtual void OnFrameTiming([[maybe_unused]] const FrameTimingSample& sample)
77 {
78 }
79 virtual pixelbullet::core::EventResult OnEvent([[maybe_unused]] pixelbullet::core::Event& event)
80 {
81 return pixelbullet::core::EventResult::Ignored;
82 }
83 virtual EventPhase GetEventPhase() const
84 {
85 return EventPhase::Normal;
86 }
87
88 const std::string& GetName() const
89 {
90 return debug_name_;
91 }
92
93protected:
94 std::string debug_name_;
95};
96} // namespace pixelbullet
Definition duration.h:6
Definition layer.h:50
Definition event.h:108
Definition layer.h:19