Pioneer
Loading...
Searching...
No Matches
Shields.h
Go to the documentation of this file.
1// Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _SHIELDS_H_
5#define _SHIELDS_H_
6
7/*
8 * Mesh shields for ships and other objects.
9 */
10#include "JsonFwd.h"
11#include "libs.h"
12#include <deque>
13
14namespace Graphics {
15 class Renderer;
16 class Material;
17}
18namespace SceneGraph {
19 class Model;
20 class StaticGeometry;
21} // namespace SceneGraph
22
23class Shields {
24public:
25 struct Shield {
26 Shield(const Color3ub &color, const matrix4x4f &matrix, SceneGraph::StaticGeometry *sg);
27 Color3ub m_colour; // I'm English, so it's "colour" ;)
30 };
31
33 virtual ~Shields();
34 virtual void SaveToJson(Json &jsonObj);
35 virtual void LoadFromJson(const Json &jsonObj);
36
37 void SetEnabled(const bool on) { m_enabled = on; }
38 void Update(const float coolDown, const float shieldStrength);
39 void SetColor(const Color3ub &);
40 void AddHit(const vector3d &hitPos);
41
42 static void Init(Graphics::Renderer *);
44 static void Uninit();
45
47
48protected:
49 struct Hits {
50 Hits(const vector3d &_pos, const Uint32 _start, const Uint32 _end);
52 Uint32 start;
53 Uint32 end;
54 };
55
56 std::deque<Hits> m_hits;
57 std::vector<Shield> m_shields;
59
61
62 static bool s_initialised;
63};
64
65#endif
nlohmann::json Json
Definition Json.h:8
Definition Renderer.h:44
Definition RefCounted.h:36
Definition Model.h:88
Definition StaticGeometry.h:19
Definition Shields.h:23
void Update(const float coolDown, const float shieldStrength)
Definition Shields.cpp:274
void AddHit(const vector3d &hitPos)
Definition Shields.cpp:335
virtual void SaveToJson(Json &jsonObj)
Definition Shields.cpp:231
std::vector< Shield > m_shields
Definition Shields.h:57
static bool s_initialised
Definition Shields.h:62
void SetEnabled(const bool on)
Definition Shields.h:37
std::deque< Hits > m_hits
Definition Shields.h:56
static void Uninit()
Definition Shields.cpp:179
virtual ~Shields()
Definition Shields.cpp:227
bool m_enabled
Definition Shields.h:60
RefCountedPtr< Graphics::Material > m_shieldMaterial
Definition Shields.h:58
SceneGraph::StaticGeometry * GetFirstShieldMesh()
Definition Shields.cpp:341
virtual void LoadFromJson(const Json &jsonObj)
Definition Shields.cpp:250
static void Init(Graphics::Renderer *)
Definition Shields.cpp:89
void SetColor(const Color3ub &)
Definition Shields.cpp:328
static void ReparentShieldNodes(SceneGraph::Model *)
Definition Shields.cpp:118
Definition Background.h:14
Definition CityOnPlanet.h:31
Definition Color.h:167
Definition Shields.h:49
Uint32 start
Definition Shields.h:52
Uint32 end
Definition Shields.h:53
vector3d pos
Definition Shields.h:51
Definition Shields.h:25
RefCountedPtr< SceneGraph::StaticGeometry > m_mesh
Definition Shields.h:29
Color3ub m_colour
Definition Shields.h:27
matrix4x4f m_matrix
Definition Shields.h:28