diff options
| author | Léo Lam <leo@leolam.fr> | 2020-11-17 00:54:46 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-17 00:54:46 +0100 |
| commit | 4d4edbfe87e77c4e712e7fef7ed8087fff18220e (patch) | |
| tree | 05b09142b74869f74779a00deff410019b8dcaac /src/KingSystem/Map/mapObjectLink.h | |
| parent | b0498a15bf6f1782f1429ffbd0b03c187f61d7c9 (diff) | |
| parent | d4f80d7cf97641742dd56cabc0b1d503cfdf7b0d (diff) | |
Merge pull request #15 from notyourav/placement
implement map::Object getters
Diffstat (limited to 'src/KingSystem/Map/mapObjectLink.h')
| -rw-r--r-- | src/KingSystem/Map/mapObjectLink.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/KingSystem/Map/mapObjectLink.h b/src/KingSystem/Map/mapObjectLink.h new file mode 100644 index 00000000..09ef72e0 --- /dev/null +++ b/src/KingSystem/Map/mapObjectLink.h @@ -0,0 +1,98 @@ +#pragma once + +#include "KingSystem/Map/mapObject.h" + +namespace ksys::map { + +class Object; + +enum class MapLinkDefType { + BasicSig = 0, + AxisX = 1, + AxisY = 2, + AxisZ = 3, + NAxisX = 4, + NAxisY = 5, + NAxisZ = 6, + GimmickSuccess = 7, + VelocityControl = 8, + BasicSigOnOnly = 9, + Remains = 10, + DeadUp = 11, + LifeZero = 12, + Stable = 13, + ChangeAtnSig = 14, + Create = 15, + Delete = 16, + MtxCopyCreate = 17, + Freeze = 18, + ForbidAttention = 19, + SyncLink = 20, + CopyWaitRevival = 21, + OffWaitRevival = 22, + Recreate = 23, + AreaCol = 24, + SensorBlind = 25, + ForSale = 26, + ModelBind = 27, + PlacementLOD = 28, + DemoMember = 29, + PhysSystemGroup = 30, + StackLink = 31, + FixedCs = 32, + HingeCs = 33, + LimitHingeCs = 34, + SliderCs = 35, + PulleyCs = 36, + BAndSCs = 37, + BAndSLimitAngYCs = 38, + CogWheelCs = 39, + RackAndPinionCs = 40, + Reference = 41, + Invalid = 42, +}; + +struct ObjectLink { + act::BaseProc* getObjectProc() const; + bool getObjectProcWithAccessor(act::ActorLinkConstDataAccess& accessor) const; + + Object* other_obj; + u32 type; + MubinIter iter; +}; +KSYS_CHECK_SIZE_NX150(ObjectLink, 0x20); + +struct ObjectLinkArray { + ObjectLink* findLinkWithType(MapLinkDefType link_type); + u32 num_links = 0; + ObjectLink* links = nullptr; +}; +KSYS_CHECK_SIZE_NX150(ObjectLinkArray, 0x10); + +class ObjectLinkData { +public: + ObjectLinkData(); + + void release(Object* obj, bool a1); + + Object* mCreateLinksSrcObj = nullptr; + Object* mDeleteLinksSrcObj = nullptr; + u32 mNumLinksReference = 0; + + void* mLinksReference = nullptr; + ObjectLinkArray mLinksOther{}; + ObjectLinkArray mLinksCs{}; + ObjectLinkArray mLinksToSelf{}; + + u32 field_50 = 0; + bool field_54 = false; + bool mAppearFade = false; + bool mNoAutoDemoMember = false; + bool field_57 = false; + + void* mGenGroup = nullptr; + void* mRails = nullptr; +}; +KSYS_CHECK_SIZE_NX150(ObjectLinkData, 0x68); + +} // namespace ksys::map |
