Pioneer
HyperspaceCloud.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 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 
9 class Frame;
10 class Ship;
11 
12 namespace Graphics {
13  class Material;
14  class Renderer;
15  class VertexArray;
16  class RenderState;
17 } // namespace Graphics
18 
19 class HyperspaceCloud : public Body {
20 public:
22  HyperspaceCloud() = delete;
23  HyperspaceCloud(Ship *, double dateDue, bool isArrival);
24  HyperspaceCloud(const Json &jsonObj, Space *space);
25  virtual ~HyperspaceCloud();
26  virtual void SetVelocity(const vector3d &v) override { m_vel = v; }
27  virtual vector3d GetVelocity() const override { return m_vel; }
28  virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
29  virtual void PostLoadFixup(Space *space) override;
30  virtual void TimeStepUpdate(const float timeStep) override;
31  Ship *GetShip() { return m_ship; }
32  Ship *EvictShip();
33  double GetDueDate() const { return m_due; }
34  void SetIsArrival(bool isArrival);
35  bool IsArrival() const { return m_isArrival; }
36  virtual void UpdateInterpTransform(double alpha) override;
37 
38 protected:
39  virtual void SaveToJson(Json &jsonObj, Space *space) override;
40 
41 private:
42  void InitGraphics();
43 
44  Ship *m_ship;
45  vector3d m_vel;
46  double m_birthdate;
47  double m_due;
48  bool m_isArrival;
49  bool m_isBeingKilled;
50 
51  struct Graphic {
52  std::unique_ptr<Graphics::VertexArray> vertices;
53  std::unique_ptr<Graphics::Material> material;
54  Graphics::RenderState *renderState;
55  };
56  Graphic m_graphic;
57 };
58 
59 #endif /* _HYPERSPACECLOUD_H */
nlohmann::json Json
Definition: Json.h:8
Definition: Body.h:54
Definition: Camera.h:76
Definition: Frame.h:28
Definition: RenderState.h:25
Definition: Renderer.h:39
Definition: HyperspaceCloud.h:19
OBJDEF(HyperspaceCloud, Body, HYPERSPACECLOUD)
virtual vector3d GetVelocity() const override
Definition: HyperspaceCloud.h:27
double GetDueDate() const
Definition: HyperspaceCloud.h:33
HyperspaceCloud()=delete
virtual void UpdateInterpTransform(double alpha) override
Definition: HyperspaceCloud.cpp:146
virtual void TimeStepUpdate(const float timeStep) override
Definition: HyperspaceCloud.cpp:97
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition: HyperspaceCloud.cpp:72
virtual ~HyperspaceCloud()
Definition: HyperspaceCloud.cpp:61
Ship * GetShip()
Definition: HyperspaceCloud.h:31
virtual void SetVelocity(const vector3d &v) override
Definition: HyperspaceCloud.h:26
void SetIsArrival(bool isArrival)
Definition: HyperspaceCloud.cpp:66
virtual void PostLoadFixup(Space *space) override
Definition: HyperspaceCloud.cpp:91
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition: HyperspaceCloud.cpp:153
bool IsArrival() const
Definition: HyperspaceCloud.h:35
Ship * EvictShip()
Definition: HyperspaceCloud.cpp:130
Definition: Ship.h:64
Definition: Space.h:19
Definition: Background.h:13