Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
Shadows.hpp
1
2#pragma once
3#include "GameObject.hpp"
4#include "CubeCoords.hpp"
5#include "Defines.hpp"
6#include "Lights.hpp"
7
8namespace basement
9{
10
11namespace model
12{
13
30class 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
60public:
61 Objects_t GetObject(const Any_t &) const override;
62
63private:
64 Object_t GetPass1(void) const;
65 Object_t GetPass2(void) const;
66 Object_t GetPass3(void) const;
67
68private:
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
81private:
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
93private:
94 explicit Shadows(const Another::Value);
95 friend GameObject;
96};
97
98} // namespace model
99
100} // namespace basement
Definition Common.hpp:10
Класс входит в проект Example Класс манипуляции кубическими координатами.
Definition CubeCoords.hpp:26
Класс входит в проект Example Общий базовый класс игрового объекта.
Definition GameObject.hpp:34
Класс входит в проект Example Класс рендеринга сцены с тенями.
Definition Shadows.hpp:32
Objects_t GetObject(const Any_t &) const override
Функция получения уникального набора компонентов игрового объекта.
Definition Shadows.cpp:218