68 Uint32
GetNumBodies()
const {
return static_cast<Uint32
>(m_bodies.size()); }
79 return m_bodyNearFinder.GetBodiesMaybeNear(b, dist);
83 return m_bodyNearFinder.GetBodiesMaybeNear(pos, dist);
90 void UpdateStarSystemCache(
const SystemPath *here);
91 void GenBody(
const double at_time,
SystemBody *b,
FrameId fId, std::vector<vector3d> &posAccum);
109 std::vector<Body *> m_bodies;
112 enum class BodyAssignation {
117 std::vector<std::pair<Body *, BodyAssignation>> m_assignedBodies;
119 void RebuildBodyIndex();
120 void RebuildSystemBodyIndex();
124 bool m_bodyIndexValid, m_sbodyIndexValid;
125 std::vector<Body *> m_bodyIndex;
126 std::vector<SystemBody *> m_sbodyIndex;
130 std::unique_ptr<Background::Container> m_background;
132 class BodyNearFinder {
134 BodyNearFinder(
const Space *space) :
143 BodyDist(
Body *_body,
double _dist) :
149 bool operator<(
const BodyDist &a)
const {
return dist < a.dist; }
151 friend bool operator<(
const BodyDist &a,
double d) {
return a.dist < d; }
152 friend bool operator<(
double d,
const BodyDist &a) {
return d < a.dist; }
155 const Space *m_space;
156 std::vector<BodyDist> m_bodyDist;
157 std::vector<Body *> m_nearBodies;
160 BodyNearFinder m_bodyNearFinder;
165 bool m_processingFinalizationQueue;
ObjectType
Definition: Body.h:27
IterationProxy< Container > MakeIterationProxy(Container &container)
Definition: IterationProxy.h:51
nlohmann::json Json
Definition: Json.h:8
Definition: Background.h:98
Definition: IterationProxy.h:13
~Space()
Definition: Space.cpp:309
Body * FindNearestTo(const Body *b, ObjectType t) const
Definition: Space.cpp:524
void GetHyperspaceExitParams(const SystemPath &source, const SystemPath &dest, vector3d &pos, vector3d &vel) const
Definition: Space.cpp:461
vector3d GetHyperspaceExitPoint(const SystemPath &source) const
Definition: Space.h:60
void KillBody(Body *)
Definition: Space.cpp:442
void RefreshBackground()
Definition: Space.cpp:318
BodyNearList GetBodiesMaybeNear(const vector3d &pos, double dist)
Definition: Space.h:81
FrameId GetRootFrame() const
Definition: Space.h:44
Uint32 GetIndexForSystemBody(const SystemBody *sbody) const
Definition: Space.cpp:380
Uint32 GetNumBodies() const
Definition: Space.h:68
Background::Container * GetBackground()
Definition: Space.h:72
vector3d GetHyperspaceExitPoint(const SystemPath &source, const SystemPath &dest) const
Definition: Space.h:54
RefCountedPtr< StarSystem > GetStarSystem() const
Definition: Space.h:42
SystemBody * GetSystemBodyByIndex(Uint32 idx) const
Definition: Space.cpp:363
Body * GetBodyByIndex(Uint32 idx) const
Definition: Space.cpp:352
void ToJson(Json &jsonObj)
Definition: Space.cpp:327
IterationProxy< std::vector< Body * > > GetBodies()
Definition: Space.h:69
Space(Game *game, RefCountedPtr< Galaxy > galaxy, Space *oldSpace=nullptr)
Definition: Space.cpp:192
const IterationProxy< const std::vector< Body * > > GetBodies() const
Definition: Space.h:70
void AddBody(Body *)
Definition: Space.cpp:429
const std::vector< Body * > BodyNearList
Definition: Space.h:76
void RemoveBody(Body *)
Definition: Space.cpp:434
void TimeStep(float step)
Definition: Space.cpp:995
void DebugDumpFrames(bool details)
Definition: Space.cpp:1083
BodyNearList GetBodiesMaybeNear(const Body *b, double dist)
Definition: Space.h:77
Body * FindBodyForPath(const SystemPath *path) const
Definition: Space.cpp:541
Uint32 GetIndexForBody(const Body *body) const
Definition: Space.cpp:370
Definition: SystemBody.h:19
Definition: SystemPath.h:13