Pioneer
Loading...
Searching...
No Matches
HyperspaceCloud.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 _HYPERSPACECLOUD_H
5#define _HYPERSPACECLOUD_H
6
7#include "Body.h"
8
9class Frame;
10class Ship;
11
12namespace Graphics {
13 class Material;
14 class MeshObject;
15 class Renderer;
16} // namespace Graphics
17
18class HyperspaceCloud : public Body {
19public:
21 HyperspaceCloud() = delete;
22 HyperspaceCloud(Ship *, double dateDue, bool isArrival);
23 HyperspaceCloud(const Json &jsonObj, Space *space);
24 virtual ~HyperspaceCloud();
25 virtual void SetVelocity(const vector3d &v) override { m_vel = v; }
26 virtual vector3d GetVelocity() const override { return m_vel; }
27 virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
28 virtual void PostLoadFixup(Space *space) override;
29 virtual void TimeStepUpdate(const float timeStep) override;
30 Ship *GetShip() { return m_ship; }
31 Ship *EvictShip();
32 double GetDueDate() const { return m_due; }
33 void SetIsArrival(bool isArrival);
34 bool IsArrival() const { return m_isArrival; }
35 virtual void UpdateInterpTransform(double alpha) override;
36
37protected:
38 virtual void SaveToJson(Json &jsonObj, Space *space) override;
39
40private:
41 static void InitGraphics(Graphics::Renderer *renderer);
42
43 Ship *m_ship;
44 vector3d m_vel;
45 double m_birthdate;
46 double m_due;
47 bool m_isArrival;
48 bool m_isBeingKilled;
49
50 static std::unique_ptr<Graphics::Material> s_cloudMat;
51 static std::unique_ptr<Graphics::MeshObject> s_cloudMeshArriving;
52 static std::unique_ptr<Graphics::MeshObject> s_cloudMeshLeaving;
53};
54
55#endif /* _HYPERSPACECLOUD_H */
nlohmann::json Json
Definition Json.h:8
Definition Body.h:57
Definition Camera.h:80
Definition Frame.h:28
Definition Renderer.h:44
Definition HyperspaceCloud.h:18
OBJDEF(HyperspaceCloud, Body, HYPERSPACECLOUD)
virtual vector3d GetVelocity() const override
Definition HyperspaceCloud.h:26
double GetDueDate() const
Definition HyperspaceCloud.h:32
HyperspaceCloud()=delete
virtual void UpdateInterpTransform(double alpha) override
Definition HyperspaceCloud.cpp:150
virtual void TimeStepUpdate(const float timeStep) override
Definition HyperspaceCloud.cpp:101
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition HyperspaceCloud.cpp:76
virtual ~HyperspaceCloud()
Definition HyperspaceCloud.cpp:65
Ship * GetShip()
Definition HyperspaceCloud.h:30
virtual void SetVelocity(const vector3d &v) override
Definition HyperspaceCloud.h:25
void SetIsArrival(bool isArrival)
Definition HyperspaceCloud.cpp:70
virtual void PostLoadFixup(Space *space) override
Definition HyperspaceCloud.cpp:95
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition HyperspaceCloud.cpp:157
bool IsArrival() const
Definition HyperspaceCloud.h:34
Ship * EvictShip()
Definition HyperspaceCloud.cpp:134
Definition Ship.h:64
Definition Space.h:19
Definition Background.h:14