Pioneer
Loading...
Searching...
No Matches
Beam.h
Go to the documentation of this file.
1// Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#pragma once
5
6#ifndef _BEAM_H
7#define _BEAM_H
8
9#include "Body.h"
10#include "Color.h"
11#include "matrix4x4.h"
12#include "vector3.h"
13
14class Camera;
15class Space;
16
17namespace Graphics {
18 class Material;
19 class Renderer;
20 class MeshObject;
21} // namespace Graphics
22
23struct ProjectileData;
24
25class Beam : public Body {
26public:
28
29 static void Add(Body *parent, const ProjectileData &prData, const vector3d &pos, const vector3d &baseVel, const vector3d &dir);
30
31 Beam() = delete;
32 Beam(Body *parent, const ProjectileData &prData, const vector3d &pos, const vector3d &baseVel, const vector3d &dir);
33 Beam(const Json &jsonObj, Space *space);
34 virtual ~Beam();
35 virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override final;
36 void TimeStepUpdate(const float timeStep) override final;
37 void StaticUpdate(const float timeStep) override final;
38 virtual void NotifyRemoved(const Body *const removedBody) override final;
39 virtual void PostLoadFixup(Space *space) override final;
40 virtual void UpdateInterpTransform(double alpha) override final;
41
42 static void FreeModel();
43
44protected:
45 virtual void SaveToJson(Json &jsonObj, Space *space) override final;
46
47private:
48 float GetDamage() const;
49 double GetRadius() const;
50 Body *m_parent;
51 vector3d m_baseVel;
52 vector3d m_dir;
53 Color m_color;
54 float m_baseDam;
55 float m_length;
56 float m_age;
57 bool m_mining;
58 bool m_active;
59
60 int m_parentIndex; // deserialisation
61
62 static void BuildModel();
63
64 static std::unique_ptr<Graphics::MeshObject> s_sideMesh;
65 static std::unique_ptr<Graphics::MeshObject> s_glowMesh;
66 static std::unique_ptr<Graphics::Material> s_sideMat;
67 static std::unique_ptr<Graphics::Material> s_glowMat;
68};
69
70#endif /* _BEAM_H */
nlohmann::json Json
Definition Json.h:8
Definition Beam.h:25
void StaticUpdate(const float timeStep) override final
Definition Beam.cpp:260
Beam()=delete
virtual void PostLoadFixup(Space *space) override final
Definition Beam.cpp:189
static void FreeModel()
Definition Beam.cpp:115
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override final
Definition Beam.cpp:302
virtual void UpdateInterpTransform(double alpha) override final
Definition Beam.cpp:195
void TimeStepUpdate(const float timeStep) override final
Definition Beam.cpp:208
virtual void SaveToJson(Json &jsonObj, Space *space) override final
Definition Beam.cpp:172
virtual void NotifyRemoved(const Body *const removedBody) override final
Definition Beam.cpp:202
static void Add(Body *parent, const ProjectileData &prData, const vector3d &pos, const vector3d &baseVel, const vector3d &dir)
Definition Beam.cpp:365
virtual ~Beam()
Definition Beam.cpp:168
OBJDEF(Beam, Body, PROJECTILE)
Definition Body.h:57
Definition Camera.h:80
Definition Renderer.h:44
Definition Space.h:19
Definition Background.h:14
Definition Color.h:66
Definition Projectile.h:9