|
14 | 14 | */ |
15 | 15 | #pragma once |
16 | 16 | #include "always.h" |
| 17 | +#include "coord.h" |
| 18 | +#include "geometry.h" |
17 | 19 | #include "snapshot.h" |
18 | 20 |
|
19 | 21 | class GhostObject; |
20 | 22 | class Object; |
21 | 23 | class PartitionData; |
22 | 24 |
|
| 25 | +class GhostObject : public SnapShot |
| 26 | +{ |
| 27 | +public: |
| 28 | + GhostObject(); |
| 29 | + virtual ~GhostObject() {} |
| 30 | + virtual void CRC_Snapshot(Xfer *xfer) override {} |
| 31 | + virtual void Xfer_Snapshot(Xfer *xfer) override; |
| 32 | + virtual void Load_Post_Process() override {} |
| 33 | + virtual void SnapShot(int player) = 0; |
| 34 | + virtual void Update_Parent_Object(Object *obj, PartitionData *data) = 0; |
| 35 | + virtual void Free_SnapShot(int player) = 0; |
| 36 | + |
| 37 | +protected: |
| 38 | + Object *m_parentObject; |
| 39 | + GeometryType m_geoType; |
| 40 | + bool m_geoIsSmall; |
| 41 | + float m_geoMajorRadius; |
| 42 | + float m_geoMinorRadius; |
| 43 | + float m_cachedAngle; |
| 44 | + Coord3D m_cachedPos; |
| 45 | + PartitionData *m_parentPartitionData; |
| 46 | +}; |
| 47 | + |
23 | 48 | class GhostObjectManager : public SnapShot |
24 | 49 | { |
25 | 50 | public: |
26 | | - virtual void CRC_Snapshot(Xfer *xfer) override; |
| 51 | + GhostObjectManager(); |
| 52 | + virtual void CRC_Snapshot(Xfer *xfer) override {} |
27 | 53 | virtual void Xfer_Snapshot(Xfer *xfer) override; |
28 | | - virtual void Load_Post_Process() override; |
29 | | - virtual ~GhostObjectManager(); |
30 | | - virtual void Reset(); |
31 | | - virtual GhostObject *Add_Ghost_Object(Object *obj, PartitionData *data); |
32 | | - virtual void Remove_Ghost_Object(GhostObject *obj); |
33 | | - virtual void Set_Local_Player_Index(int index); |
34 | | - virtual void Update_Orphaned_Objects(int *unk, int unk2); |
35 | | - virtual void Release_Partition_Data(); |
36 | | - virtual void Restore_Partition_Data(); |
| 54 | + virtual void Load_Post_Process() override {} |
| 55 | + virtual ~GhostObjectManager() {} |
| 56 | + virtual void Reset() {} |
| 57 | + virtual GhostObject *Add_Ghost_Object(Object *obj, PartitionData *data) { return nullptr; } |
| 58 | + virtual void Remove_Ghost_Object(GhostObject *obj) {} |
| 59 | + virtual void Set_Local_Player_Index(int index) { m_localPlayerIndex = index; } |
| 60 | + virtual void Update_Orphaned_Objects(int *unk, int unk2) {} |
| 61 | + virtual void Release_Partition_Data() {} |
| 62 | + virtual void Restore_Partition_Data() {} |
37 | 63 |
|
38 | 64 | void Set_Updating_Map_Boundary(bool update) { m_isUpdatingMapBoundary = update; } |
| 65 | + void Set_Is_Loading(bool loading) { m_isLoading = loading; } |
39 | 66 |
|
40 | | -private: |
| 67 | +protected: |
41 | 68 | int m_localPlayerIndex; |
42 | 69 | bool m_isUpdatingMapBoundary; |
43 | 70 | bool m_isLoading; |
| 71 | + friend class W3DGhostObject; |
44 | 72 | }; |
45 | 73 |
|
46 | 74 | #ifdef GAME_DLL |
|
0 commit comments