Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
IGameObject.hpp
1 
2 #pragma once
3 #include "Defines.hpp"
4 
5 namespace basement
6 {
7 
8 namespace model
9 {
10 
27 {
28 protected:
29  using Objects_t = ::std::vector<Object_t>;
30 
31 public:
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,
83  Particles,
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 
99 public:
104  virtual size_t GetType(void) const = 0;
105 
110  virtual Objects_t GetObject(const Any_t & = {}) const = 0;
111 
112 public:
113  virtual ~IGameObject(void) = default;
114 };
115 
116 } // namespace model
117 
118 } // namespace basement
basement::model::IGameObject
Класс входит в проект Example Интерфейсный класс игрового объекта.
Definition: IGameObject.hpp:27
basement::model::Camera
Класс входит в проект Example Класс главной камеры сцены.
Definition: Camera.hpp:28
basement::model::IGameObject::GetType
virtual size_t GetType(void) const =0
Функция получения типа игрового объекта.
basement::model::IGameObject::GetObject
virtual Objects_t GetObject(const Any_t &={}) const =0
Функция получения уникального набора компонентов игрового объекта.
basement::model::Skybox
Класс входит в проект Example Класс скайбокса.
Definition: Skybox.hpp:28
basement::model::Particles
Класс входит в проект Example Класс системы частиц.
Definition: Particles.hpp:44
basement
Definition: Common.hpp:10
basement::model::Water
Класс входит в проект Example Класс объекта отрисовки воды.
Definition: Water.hpp:28
basement::model::Loader
Класс входит в проект Example Класс загрузчика сцены.
Definition: Loader.hpp:28
basement::model::Animated
Класс входит в проект Example Класс рендеринга анимированного объекта.
Definition: Animated.hpp:31