Pioneer
Loading...
Searching...
No Matches
TerrainBody.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 _TERRAINBODY_H
5#define _TERRAINBODY_H
6
7#include "Body.h"
8#include "JsonFwd.h"
9#include "matrix4x4.h"
10
11class BaseSphere;
12class Camera;
13class Frame;
14class Space;
15class SystemBody;
16
17namespace Graphics {
18 class Renderer;
19}
20
21class TerrainBody : public Body {
22public:
24
25 virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override;
26 virtual void SubRender(Graphics::Renderer *r, const matrix4x4d &modelView, const vector3d &camPos) {}
27 virtual void SetFrame(FrameId fId) override;
28 virtual bool OnCollision(Body *b, Uint32 flags, double relVel) override { return true; }
29 virtual double GetMass() const override { return m_mass; }
30 double GetTerrainHeight(const vector3d &pos) const;
31 virtual const SystemBody *GetSystemBody() const override { return m_sbody; }
32
33 // returns value in metres
34 double GetMaxFeatureRadius() const { return m_maxFeatureHeight; }
35
36 // implements calls to all relevant terrain management sub-systems
37 static void OnChangeDetailLevel();
38
39protected:
40 TerrainBody() = delete;
42 TerrainBody(const Json &jsonObj, Space *space);
43 virtual ~TerrainBody();
44
45 void InitTerrainBody();
46
47 virtual void SaveToJson(Json &jsonObj, Space *space) override;
48
49private:
50 const SystemBody *m_sbody;
51 double m_mass;
52 std::unique_ptr<BaseSphere> m_baseSphere;
53 double m_maxFeatureHeight;
54};
55
56#endif
nlohmann::json Json
Definition Json.h:8
Definition BaseSphere.h:21
Definition Body.h:57
Definition Camera.h:80
Definition Frame.h:28
Definition Renderer.h:44
Definition Space.h:19
Definition SystemBody.h:19
Definition TerrainBody.h:21
TerrainBody()=delete
virtual bool OnCollision(Body *b, Uint32 flags, double relVel) override
Definition TerrainBody.h:28
double GetMaxFeatureRadius() const
Definition TerrainBody.h:34
virtual const SystemBody * GetSystemBody() const override
Definition TerrainBody.h:31
virtual double GetMass() const override
Definition TerrainBody.h:29
virtual void SubRender(Graphics::Renderer *r, const matrix4x4d &modelView, const vector3d &camPos)
Definition TerrainBody.h:26
double GetTerrainHeight(const vector3d &pos) const
Definition TerrainBody.cpp:142
virtual void SaveToJson(Json &jsonObj, Space *space) override
Definition TerrainBody.cpp:43
static void OnChangeDetailLevel()
Definition TerrainBody.cpp:154
void InitTerrainBody()
Definition TerrainBody.cpp:28
virtual void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform) override
Definition TerrainBody.cpp:69
virtual ~TerrainBody()
Definition TerrainBody.cpp:23
virtual void SetFrame(FrameId fId) override
Definition TerrainBody.cpp:127
OBJDEF(TerrainBody, Body, TERRAINBODY)
Definition Background.h:14
Definition FrameId.h:9