Covellite++  Version: 2.3.0 Revision: 2580 Platform: x64 Build: 15:23 16.10.2020
Кроссплатформенный фреймворк для разработки приложений на С++
Shadows.hpp
1 
2 #pragma once
3 #include "GameObject.hpp"
4 #include "CubeCoords.hpp"
5 #include "Defines.hpp"
6 #include "Lights.hpp"
7 
8 namespace basement
9 {
10 
11 namespace model
12 {
13 
30 class Shadows final :
31  public GameObject
32 {
33  using CursorDataPtr_t = ::std::shared_ptr<::basement::Cursor>;
34  using ComponentPtr_t = ::covellite::api::Component::ComponentPtr_t;
35  using Updater_t = ::covellite::api::Updater_t;
36 
37  struct Light_s
38  {
39  ::glm::mat4 View;
40  ::glm::mat4 Projection;
41  };
42 
43  struct Object_s
44  {
45  float IdX, IdY, dummy2, dummy3;
46  };
47 
48  struct Cursor_s
49  {
50  float X, Y, dummy2, dummy3;
51  };
52 
53  struct ShaderData
54  {
55  Light_s Light;
56  Cursor_s Cursor;
57  Lights_t Lights;
58  };
59 
60 public:
61  Objects_t GetObject(const Any_t &) const override;
62 
63 private:
64  Object_t GetPass1(void) const;
65  Object_t GetPass2(void) const;
66  Object_t GetPass3(void) const;
67 
68 private:
69  Object_t GetTextureSurface(const bool) const;
70  Object_t GetShadowCamera(void) const;
71  static Object_t GetShadowShaders(void);
72  Object_t GetSceneCamera(void) const;
73  static Object_t GetSceneShaders(void);
74  Object_t GetShaderData(const CubeCoords &) const;
75  Object_t GetTransformData(const CubeCoords &) const;
76  static Object_t GetTransform(const Object_t &);
77  static Object_t GetFlatCamera(void);
78  Object_t GetFlatShaders(const String_t & = uT("psExperimental")) const;
79  Object_t GetTextureObject(const String_t &, const float = 0.0f) const;
80 
81 private:
82  float m_ScaleFactor = 1.5f;
83  ComponentPtr_t m_pLightCamera;
84  Object_t m_ShadowMap;
85  Object_t m_SurfaceTextures;
86  ComponentPtr_t m_pSceneCamera;
87  ComponentPtr_t m_pBkSurface;
88  ::std::shared_ptr<ShaderData> m_pShaderData;
89  mutable CursorDataPtr_t m_pCursorData;
90  Object_t m_SceneObjects_pass1;
91  Object_t m_SceneObjects_pass2;
92 
93 private:
94  explicit Shadows(const Another::Value);
95  friend GameObject;
96 };
97 
98 } // namespace model
99 
100 } // namespace basement
basement::model::Shadows::GetObject
Objects_t GetObject(const Any_t &) const override
Функция получения уникального набора компонентов игрового объекта.
Definition: Shadows.cpp:218
covellite::api::Component::Make
static ComponentPtr_t Make(const SourceParams_t &)
Функция создания объектов компонентов.
Definition: Component.inl:29
basement::model::Shadows
Класс входит в проект Example Класс рендеринга сцены с тенями.
Definition: Shadows.hpp:32
basement
Definition: Common.hpp:10
basement::model::CubeCoords
Класс входит в проект Example Класс манипуляции кубическими координатами.
Definition: CubeCoords.hpp:26
basement::model::GameObject
Класс входит в проект Example Общий базовый класс игрового объекта.
Definition: GameObject.hpp:34