Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
IGameObject.hpp
1
2#pragma once
3#include "Defines.hpp"
4
5namespace basement
6{
7
8namespace model
9{
10
27{
28protected:
29 using Objects_t = ::std::vector<Object_t>;
30
31public:
32 class Support final
33 {
34 public:
35 enum Value
36 {
37 Skybox = 0, // Перед камерой основной сцены!
38 Camera,
39
40 Invalid,
41 };
42 };
43
44 class Landscape final
45 {
46 public:
47 enum Value
48 {
49 // Объекты поверхности, не содержащие прозрачных пикселей
50 None = Support::Invalid, // После камеры!
51 Sand,
52 Rock,
53 Well,
54
55 // Объекты поверхности, содержащие прозрачные пиксели
56 Grass,
57 Bush,
58 Tree,
59
60 Invalid,
61 };
62 };
63
64 class Extra final
65 {
66 public:
67 enum Value
68 {
69 Water = Landscape::Invalid, // Вода - после объектов поверхности!
70 Loader, // Должен рендерится последним, т.к. его updater удаляет
71 // объекты, которые еще находятся в списке рендеринга.
72
73 Invalid,
74 };
75 };
76
77 class Another final
78 {
79 public:
80 enum Value
81 {
82 Animated = Extra::Invalid,
84 ShadowsWindow,
85 ShadowsScale,
86 ShadowsFixSize,
87
88 Invalid,
89 };
90
91 public:
92 static bool IsShadow(const Another::Value _Value)
93 {
94 return _Value >= Another::ShadowsWindow &&
95 _Value <= Another::ShadowsFixSize;
96 }
97 };
98
99public:
104 virtual size_t GetType(void) const = 0;
105
110 virtual Objects_t GetObject(const Any_t & = {}) const = 0;
111
112public:
113 virtual ~IGameObject(void) = default;
114};
115
116} // namespace model
117
118} // namespace basement
Definition Common.hpp:10
Класс входит в проект Example Класс рендеринга анимированного объекта.
Definition Animated.hpp:31
Класс входит в проект Example Класс главной камеры сцены.
Definition Camera.hpp:28
Класс входит в проект Example Интерфейсный класс игрового объекта.
Definition IGameObject.hpp:27
virtual Objects_t GetObject(const Any_t &={}) const =0
Функция получения уникального набора компонентов игрового объекта.
virtual size_t GetType(void) const =0
Функция получения типа игрового объекта.
Класс входит в проект Example Класс загрузчика сцены.
Definition Loader.hpp:28
Класс входит в проект Example Класс системы частиц.
Definition Particles.hpp:44
Класс входит в проект Example Класс скайбокса.
Definition Skybox.hpp:28
Класс входит в проект Example Класс объекта отрисовки воды.
Definition Water.hpp:28