R-Type 0.1
Loading...
Searching...
No Matches
sceneConcept.hpp
1#pragma once
2
3#include <concepts>
4#include <optional>
5
6#include "GameEngine.hpp"
7
8namespace rtk {
20template <typename T>
21concept SceneIdentifier = std::is_enum_v<T>;
22
38template <typename T, typename TSceneId, typename TInput>
39concept Scene =
41 requires(T &scene, EngineContext &context, const TInput &input, float dt) {
42 { T::Type } -> std::convertible_to<TSceneId>;
43 { scene.onEnter(context) } -> std::same_as<void>;
44 {
45 scene.onUpdate(context, input, dt)
46 } -> std::same_as<std::optional<TSceneId>>;
47 { scene.onExit(context) } -> std::same_as<void>;
48 };
49
51} // namespace rtk
Requirements for a type used to identify scenes, which must be an enum.
Definition sceneConcept.hpp:21
Requirements for a scene managed by rtk::SceneManager.
Definition sceneConcept.hpp:39