Covellite++
Version: 2.3.2 Revision: 2584 Platform: x64 Build: 19:03 05.09.2026
Кроссплатформенный фреймворк для разработки приложений на С++
Toggle main menu visibility
Загрузка...
Поиск...
Не найдено
GameScene.hpp
1
2
#pragma once
3
#include <vector>
4
#include <alicorn/std.fast/unordered-map.hpp>
5
#include "Defines.hpp"
6
#include "CubeCoords.hpp"
7
#include "Constants.hpp"
8
9
namespace
basement
10
{
11
12
namespace
support
13
{
14
34
class
GameScene
final
35
{
36
using
SceneObjects_t =
37
::alicorn::extension::std::fast::unordered_map<uint64_t, ::std::vector<Id_t>>;
38
using
CellObject_t = SceneObjects_t::value_type;
39
using
Callback_t = ::std::function<void(
const
Id_t)>;
40
using
RenderObject_t = ::std::pair<float, Id_t>;
41
42
public
:
43
class
Camera final
44
{
45
public
:
46
bool
IsVisible(
const
model::CubeCoords
&)
const
;
47
float
GetSquaredDistance(
const
model::CubeCoords
&)
const
;
48
49
private
:
50
float
m_X;
51
float
m_Y;
52
float
m_CameraOffsetX;
53
float
m_CameraOffsetY;
54
float
m_Direction;
55
56
public
:
57
explicit
Camera(
const
float
= 0.0f,
const
float
= 0.0f,
const
float
= 0.0f);
58
};
59
60
private
:
62
class
Scene
63
{
64
public
:
65
SceneObjects_t Objects;
66
};
67
68
public
:
69
void
SetCameraInfo(
const
Camera &);
70
void
Render(
const
Callback_t &);
71
void
ProcessAll(
const
Callback_t &);
72
73
public
:
74
void
Add(
const
size_t
, const ::std::vector<Id_t> &);
75
void
Add(
const
size_t
, const ::std::vector<Id_t> &,
const
model::CubeCoords
&);
76
::std::vector<Id_t> Remove(
const
model::CubeCoords
&);
77
void
CompleteReplace(
void
);
78
void
CompleteUpdate(
void
);
79
80
private
:
81
void
BuildRenderObjects(
void
);
82
void
Add(
const
size_t
, const ::std::vector<Id_t> &,
const
uint64_t);
83
84
private
:
85
::std::vector<Scene> m_Scenes;
86
::std::vector<Scene> m_BkScenes;
87
Camera m_Camera;
88
::std::vector<RenderObject_t> m_PrepareRenderObjects;
89
::std::vector<RenderObject_t> m_CompleteRenderObjects;
90
bool
m_IsUpdateRenderObjects =
false
;
91
};
92
93
// cppcheck-suppress passedByValue
94
inline
void
GameScene::Add(
95
const
size_t
_SceneId,
96
const ::std::vector<Id_t> & _ObjectIds)
97
{
98
Add(_SceneId, _ObjectIds,
static_cast<
uint64_t
>
(0));
99
}
100
101
inline
void
GameScene::Add(
102
const
size_t
_SceneId,
103
const ::std::vector<Id_t> & _ObjectIds,
104
const
model::CubeCoords
& _Position)
105
{
106
Add(_SceneId, _ObjectIds, _Position.GetHash());
107
}
108
109
inline
void
GameScene::Add(
110
const
size_t
_SceneId,
111
const ::std::vector<Id_t> & _ObjectIds,
112
const
uint64_t _CoordHash)
113
{
114
if
(_SceneId >= m_BkScenes.size()) m_BkScenes.resize(_SceneId + 1);
115
m_BkScenes[_SceneId].Objects[_CoordHash] = _ObjectIds;
116
}
117
118
}
// namespace support
119
120
}
// namespace basement
basement
Определения
Common.hpp:10
basement::model::CubeCoords
Класс входит в проект Example Класс манипуляции кубическими координатами.
Определения
CubeCoords.hpp:26
basement::support::GameScene
Класс входит в проект Example Класс реализации игровой сцены.
Определения
GameScene.hpp:35
basement::support::GameScene::Scene
Класс информации об одной сцене.
Определения
GameScene.hpp:63
Solution
Solution
Example
Example
Basements
Demo
GameScene.hpp
Документация по Covellite++. Последние изменения:
. Создано системой
1.18.0