Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
GameView.h
Go to the documentation of this file.
1/* Copyright (C) 2023 Wildfire Games.
2 * This file is part of 0 A.D.
3 *
4 * 0 A.D. is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * 0 A.D. is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef INCLUDED_GAMEVIEW
19#define INCLUDED_GAMEVIEW
20
22#include "renderer/Scene.h"
24
25#include "lib/input.h" // InReaction - can't forward-declare enum
26
27class CCamera;
28class CCinemaManager;
29class CGame;
30class CObjectManager;
31class CVector3D;
32struct SViewPort;
33
34class CGameViewImpl;
35
36class CGameView : private Scene
37{
39public:
41 ~CGameView() override;
42
43 void SetViewport(const SViewPort& vp);
44
45 void RegisterInit();
46
47 /**
48 * Updates all the view information (i.e. rotate camera, scroll, whatever). This will *not* change any
49 * World information - only the *presentation*.
50 *
51 * @param deltaRealTime Elapsed real time since the last frame.
52 */
53 void Update(const float deltaRealTime);
54
55 void BeginFrame();
56 void Prepare(Renderer::Backend::IDeviceCommandContext* deviceCommandContext);
57 void Render(Renderer::Backend::IDeviceCommandContext* deviceCommandContext);
59
61
65 float GetCameraZoom() const;
66
67 void SetCamera(const CVector3D& pos, float rotX, float rotY, float zoom);
68 void MoveCameraTarget(const CVector3D& target);
69 void ResetCameraTarget(const CVector3D& target);
70 void FollowEntity(entity_id_t entity, bool firstPerson);
72
73 #define DECLARE_BOOLEAN_SETTING(NAME) \
74 bool Get##NAME##Enabled() const; \
75 void Set##NAME##Enabled(bool Enabled);
76
78 DECLARE_BOOLEAN_SETTING(LockCullCamera);
79 DECLARE_BOOLEAN_SETTING(ConstrainCamera);
80
81 #undef DECLARE_BOOLEAN_SETTING
82
86
87 // Implementations of Scene
88 void EnumerateObjects(const CFrustum& frustum, SceneCollector* c) override;
89 CLOSTexture& GetLOSTexture() override;
92
93private:
94 // Unloads all graphics resources loaded by RegisterInit.
95 void UnloadResources();
96
98};
99
100extern InReaction game_view_handler(const SDL_Event_* ev);
101
102#endif // INCLUDED_GAMEVIEW
InReaction game_view_handler(const SDL_Event_ *ev)
Definition: GameView.cpp:357
Definition: Camera.h:42
Class for in game playing of cinematics.
Definition: CinemaManager.h:29
Definition: Frustum.h:37
Definition: GameView.cpp:66
Definition: GameView.h:37
CMiniMapTexture & GetMiniMapTexture() override
Return the minimap texture to be used for rendering this scene.
Definition: GameView.cpp:204
float GetCameraZoom() const
Definition: GameView.cpp:327
CCamera * GetCamera()
Definition: GameView.cpp:184
void UnloadResources()
Definition: GameView.cpp:287
CVector3D GetCameraPosition() const
Definition: GameView.cpp:317
InReaction HandleEvent(const SDL_Event_ *ev)
Definition: GameView.cpp:368
void EnumerateObjects(const CFrustum &frustum, SceneCollector *c) override
Send all objects that can be seen when rendering the given frustum to the scene collector.
Definition: GameView.cpp:257
entity_id_t GetFollowedEntity()
Definition: GameView.cpp:352
NONCOPYABLE(CGameView)
CGameViewImpl * m
Definition: GameView.h:97
void BeginFrame()
Definition: GameView.cpp:224
CTerritoryTexture & GetTerritoryTexture() override
Return the territory texture to be used for rendering this scene.
Definition: GameView.cpp:199
void Update(const float deltaRealTime)
Updates all the view information (i.e.
Definition: GameView.cpp:293
void FollowEntity(entity_id_t entity, bool firstPerson)
Definition: GameView.cpp:347
CLOSTexture & GetLOSTexture() override
Return the LOS texture to be used for rendering this scene.
Definition: GameView.cpp:194
DECLARE_BOOLEAN_SETTING(Culling)
void ResetCameraTarget(const CVector3D &target)
Definition: GameView.cpp:342
CVector3D GetCameraPivot() const
Definition: GameView.cpp:312
void MoveCameraTarget(const CVector3D &target)
Definition: GameView.cpp:337
CCinemaManager * GetCinema()
Definition: GameView.cpp:189
void Prepare(Renderer::Backend::IDeviceCommandContext *deviceCommandContext)
Definition: GameView.cpp:236
void SetCamera(const CVector3D &pos, float rotX, float rotY, float zoom)
Definition: GameView.cpp:332
DECLARE_BOOLEAN_SETTING(ConstrainCamera)
void SetViewport(const SViewPort &vp)
Definition: GameView.cpp:174
void RegisterInit()
Definition: GameView.cpp:209
void RenderOverlays(Renderer::Backend::IDeviceCommandContext *deviceCommandContext)
Definition: GameView.cpp:248
DECLARE_BOOLEAN_SETTING(LockCullCamera)
CVector3D GetCameraRotation() const
Definition: GameView.cpp:322
CObjectManager & GetObjectManager()
Definition: GameView.cpp:179
CGameView(Renderer::Backend::IDevice *device, CGame *pGame)
Definition: GameView.cpp:160
~CGameView() override
Definition: GameView.cpp:167
void Render(Renderer::Backend::IDeviceCommandContext *deviceCommandContext)
Definition: GameView.cpp:242
The container that holds the rules, resources and attributes of the game.
Definition: Game.h:43
Maintains the LOS (fog-of-war / shroud-of-darkness) texture, used for rendering and for the minimap.
Definition: LOSTexture.h:39
Definition: MiniMapTexture.h:41
Definition: ObjectManager.h:42
Maintains the territory boundary texture, used for rendering and for the minimap.
Definition: TerritoryTexture.h:31
Definition: Vector3D.h:31
Definition: IDeviceCommandContext.h:42
Definition: IDevice.h:48
This interface accepts renderable objects.
Definition: Scene.h:90
This interface describes a scene to the renderer.
Definition: Scene.h:54
InReaction
Definition: input.h:35
u32 entity_id_t
Entity ID type.
Definition: Entity.h:29
Definition: libsdl.h:53
Definition: Camera.h:34