Skip to content

Commit b372726

Browse files
Merge pull request #1 from StoodJarguar657/StoodJarguar6577-Dev
Added ContainerManager, Pathfinder and PortalManager
2 parents 79c38e5 + a04f6f9 commit b372726

File tree

9 files changed

+317
-3
lines changed

9 files changed

+317
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.vscode

include/SmSdk/AreaTriggerManager.hpp

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#pragma once
2+
3+
#include "SmSdk/Physics/AreaTriggerProxy.hpp"
4+
#include "SmSdk/bullet_include.hpp"
5+
#include "SmSdk/Base/Task.hpp"
6+
7+
#include <DirectXMath.h>
8+
#include <concrt.h>
9+
10+
#include <unordered_map>
11+
#include <vector>
12+
13+
struct AreaTrigger
14+
{
15+
/* 0x0000 */ __int32 m_id;
16+
/* 0x0004 */ __int16 m_worldId;
17+
private:
18+
/* 0x0006 */ char pad_0x6[0xE];
19+
public:
20+
/* 0x0014 */ unsigned __int32 m_filter;
21+
private:
22+
/* 0x0018 */ char pad_0x18[0xC];
23+
public:
24+
/* 0x0024 */ unsigned __int32 m_someFlag;
25+
private:
26+
/* 0x0028 */ char pad_0x28[0x4];
27+
public:
28+
/* 0x002C */ bool m_bWaterTrigger;
29+
private:
30+
/* 0x002D */ char pad_0x2D[0x3];
31+
public:
32+
/* 0x0030 */ btBoxShape* m_pBoxShape;
33+
/* 0x0038 */ btPairCachingGhostObject* m_pGhostObject;
34+
/* 0x0040 */ AreaTriggerProxy* m_pPhysicsProxy;
35+
private:
36+
/* 0x0048 */ char pad_0x48[0x100];
37+
public:
38+
/* 0x0148 */ DirectX::XMFLOAT3 m_position;
39+
/* 0x0154 */ DirectX::XMFLOAT4 m_rotation;
40+
/* 0x0164 */ DirectX::XMFLOAT3 m_size;
41+
private:
42+
/* 0x0170 */ char pad_0x170[0x8];
43+
}; // Size: 0x178
44+
45+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_id) == 0x0, "AreaTrigger::m_id: Incorrect offset");
46+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_worldId) == 0x4, "AreaTrigger::m_worldId: Incorrect offset");
47+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_filter) == 0x14, "AreaTrigger::m_filter: Incorrect offset");
48+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_someFlag) == 0x24, "AreaTrigger::m_someFlag: Incorrect offset");
49+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_bWaterTrigger) == 0x2C, "AreaTrigger::m_bWaterTrigger: Incorrect offset");
50+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_pBoxShape) == 0x30, "AreaTrigger::m_pBoxShape: Incorrect offset");
51+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_pGhostObject) == 0x38, "AreaTrigger::m_pGhostObject: Incorrect offset");
52+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_pPhysicsProxy) == 0x40, "AreaTrigger::m_pPhysicsProxy: Incorrect offset");
53+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_position) == 0x148, "AreaTrigger::m_position: Incorrect offset");
54+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_rotation) == 0x154, "AreaTrigger::m_rotation: Incorrect offset");
55+
static_assert(offsetof(AreaTrigger, AreaTrigger::m_size) == 0x164, "AreaTrigger::m_size: Incorrect offset");
56+
57+
static_assert(sizeof(AreaTrigger) == 0x178, "AreaTrigger: Incorrect Size");
58+
59+
60+
61+
struct AreaTriggerWorld
62+
{
63+
/* 0x0000 */ unsigned __int16 m_worldId;
64+
private:
65+
/* 0x0002 */ char pad_0x2[0x6];
66+
public:
67+
/* 0x0008 */ std::map<int, AreaTrigger*> m_mapAreaTriggers;
68+
/* 0x0018 */ std::vector<AreaTrigger*> m_vecAreaTriggerQueue;
69+
private:
70+
/* 0x0030 */ char pad_0x30[0x18];
71+
}; // Size: 0x48
72+
73+
static_assert(offsetof(AreaTriggerWorld, AreaTriggerWorld::m_worldId) == 0x0, "AreaTriggerWorld::m_worldId: Incorrect offset");
74+
static_assert(offsetof(AreaTriggerWorld, AreaTriggerWorld::m_mapAreaTriggers) == 0x8, "AreaTriggerWorld::m_mapAreaTriggers: Incorrect offset");
75+
static_assert(offsetof(AreaTriggerWorld, AreaTriggerWorld::m_vecAreaTriggerQueue) == 0x18, "AreaTriggerWorld::m_vecAreaTriggerQueue: Incorrect offset");
76+
77+
static_assert(sizeof(AreaTriggerWorld) == 0x48, "AreaTriggerWorld: Incorrect Size");
78+
79+
80+
81+
struct AreaTriggerManager : public Task
82+
{
83+
static AreaTriggerManager* GetInstance();
84+
85+
/* 0x0008 */ Concurrency::event m_event;
86+
/* 0x0050 */ unsigned __int32 m_areaTriggerIdCounter;
87+
private:
88+
/* 0x0054 */ char pad_0x54[0x4];
89+
public:
90+
/* 0x0058 */ std::unordered_map<std::uint16_t, AreaTriggerWorld> m_mapAreaTriggerWorlds;
91+
/* 0x0098 */ std::vector<AreaTrigger*> m_vecAreaTriggers;
92+
private:
93+
/* 0x00B0 */ char pad_0xB0[0x10];
94+
95+
}; // Size: 0xC0
96+
97+
static_assert(offsetof(AreaTriggerManager, AreaTriggerManager::m_event) == 0x8, "AreaTriggerManager::m_event: Incorrect offset");
98+
static_assert(offsetof(AreaTriggerManager, AreaTriggerManager::m_areaTriggerIdCounter) == 0x50, "AreaTriggerManager::m_areaTriggerIdCounter: Incorrect offset");
99+
static_assert(offsetof(AreaTriggerManager, AreaTriggerManager::m_mapAreaTriggerWorlds) == 0x58, "AreaTriggerManager::m_mapAreaTriggerWorlds: Incorrect offset");
100+
static_assert(offsetof(AreaTriggerManager, AreaTriggerManager::m_vecAreaTriggers) == 0x98, "AreaTriggerManager::m_vecAreaTriggers: Incorrect offset");
101+
102+
static_assert(sizeof(AreaTriggerManager) == 0xC0, "AreaTriggerManager: Incorrect Size");

include/SmSdk/ContainerManager.hpp

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#pragma once
2+
3+
#include "SmSdk/boost_include.hpp"
4+
#include <unordered_map>
5+
6+
struct ContainerEntry
7+
{
8+
/* 0x0000 */ boost::uuids::uuid m_itemUuid;
9+
/* 0x0010 */ __int32 m_itemId;
10+
/* 0x0014 */ __int32 m_itemQuantity;
11+
}; // Size: 0x18
12+
13+
static_assert(offsetof(ContainerEntry, ContainerEntry::m_itemUuid) == 0x0, "ContainerEntry::m_itemUuid: Incorrect offset");
14+
static_assert(offsetof(ContainerEntry, ContainerEntry::m_itemId) == 0x10, "ContainerEntry::m_itemId: Incorrect offset");
15+
static_assert(offsetof(ContainerEntry, ContainerEntry::m_itemQuantity) == 0x14, "ContainerEntry::m_itemQuantity: Incorrect offset");
16+
17+
static_assert(sizeof(ContainerEntry) == 0x18, "ContainerEntry: Incorrect Size");
18+
19+
20+
21+
struct ContainerItems
22+
{
23+
/* 0x0000 */ unsigned __int16 m_uMaxStackSize;
24+
private:
25+
/* 0x0002 */ char pad_0x2[0x6];
26+
public:
27+
/* 0x0008 */ std::vector<ContainerEntry> m_vecEntries;
28+
}; // Size: 0x20
29+
30+
static_assert(offsetof(ContainerItems, ContainerItems::m_uMaxStackSize) == 0x0, "ContainerItems::m_uMaxStackSize: Incorrect offset");
31+
static_assert(offsetof(ContainerItems, ContainerItems::m_vecEntries) == 0x8, "ContainerItems::m_vecEntries: Incorrect offset");
32+
33+
static_assert(sizeof(ContainerItems) == 0x20, "ContainerItems: Incorrect Size");
34+
35+
36+
37+
struct Container2 : public NetObj
38+
{
39+
private:
40+
/* 0x0028 */ char pad_0x28[0x8];
41+
public:
42+
/* 0x0030 */ ContainerItems m_clientItems;
43+
/* 0x0050 */ ContainerItems m_serverItems;
44+
/* 0x0070 */ ContainerItems container_items3;
45+
private:
46+
/* 0x0090 */ char pad_0x90[0x4];
47+
public:
48+
/* 0x0094 */ __int32 update_counter;
49+
/* 0x0098 */ __int32 last_update_tick;
50+
private:
51+
/* 0x009C */ char pad_0x9C[0x34];
52+
public:
53+
/* 0x00D0 */ std::vector<boost::uuids::uuid> m_vecFilters;
54+
/* 0x00E8 */ bool m_bAllowSpend;
55+
private:
56+
/* 0x00E9 */ char pad_0xE9[0x7];
57+
}; // Size: 0xF0
58+
59+
static_assert(offsetof(Container2, Container2::m_clientItems) == 0x30, "Container2::m_clientItems: Incorrect offset");
60+
static_assert(offsetof(Container2, Container2::m_serverItems) == 0x50, "Container2::m_serverItems: Incorrect offset");
61+
static_assert(offsetof(Container2, Container2::container_items3) == 0x70, "Container2::container_items3: Incorrect offset");
62+
static_assert(offsetof(Container2, Container2::update_counter) == 0x94, "Container2::update_counter: Incorrect offset");
63+
static_assert(offsetof(Container2, Container2::last_update_tick) == 0x98, "Container2::last_update_tick: Incorrect offset");
64+
static_assert(offsetof(Container2, Container2::m_vecFilters) == 0xD0, "Container2::m_vecFilters: Incorrect offset");
65+
static_assert(offsetof(Container2, Container2::m_bAllowSpend) == 0xE8, "Container2::m_bAllowSpend: Incorrect offset");
66+
67+
static_assert(sizeof(Container2) == 0xF0, "Container2: Incorrect Size");
68+
69+
70+
71+
struct ContainerManager
72+
{
73+
static ContainerManager* GetInstance();
74+
75+
private:
76+
/* 0x0000 */ char pad_0x0[0x28];
77+
public:
78+
/* 0x0028 */ bool m_bOngoingTransaction;
79+
private:
80+
/* 0x0029 */ char pad_0x29[0x7];
81+
public:
82+
/* 0x0030 */ std::shared_ptr<Container2> some_container;
83+
/* 0x0040 */ std::unordered_map<int, std::shared_ptr<Container2>> m_worldContainerMap;
84+
private:
85+
/* 0x0080 */ char pad_0x80[0x18];
86+
}; // Size: 0x98
87+
88+
static_assert(offsetof(ContainerManager, ContainerManager::m_bOngoingTransaction) == 0x28, "ContainerManager::m_bOngoingTransaction: Incorrect offset");
89+
static_assert(offsetof(ContainerManager, ContainerManager::some_container) == 0x30, "ContainerManager::some_container: Incorrect offset");
90+
static_assert(offsetof(ContainerManager, ContainerManager::m_worldContainerMap) == 0x40, "ContainerManager::m_worldContainerMap: Incorrect offset");
91+
92+
static_assert(sizeof(ContainerManager) == 0x98, "ContainerManager: Incorrect Size");

include/SmSdk/Pathfinder.hpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#pragma once
2+
3+
struct PathNode : public NetObj
4+
{
5+
private:
6+
/* 0x0028 */ char pad_0x28[0x8];
7+
public:
8+
/* 0x0030 */ __int16 m_worldId;
9+
private:
10+
/* 0x0032 */ char pad_0x32[0x1E];
11+
public:
12+
/* 0x0050 */ DirectX::XMFLOAT3 m_position;
13+
private:
14+
/* 0x005C */ char pad_0x5C[0x4];
15+
}; // Size: 0x60
16+
17+
static_assert(offsetof(PathNode, PathNode::m_worldId) == 0x30, "PathNode::m_worldId: Incorrect offset");
18+
static_assert(offsetof(PathNode, PathNode::m_position) == 0x50, "PathNode::m_position: Incorrect offset");
19+
20+
static_assert(sizeof(PathNode) == 0x60, "PathNode: Incorrect Size");
21+
22+
23+
24+
struct Pathfinder
25+
{
26+
static Pathfinder* GetInstance();
27+
28+
/* 0x0000 */ std::unordered_map<int, std::shared_ptr<PathNode>> m_mapPathNodes;
29+
/* 0x0040 */ std::vector<std::shared_ptr<PathNode>> m_vecPathNodes;
30+
private:
31+
/* 0x0058 */ char pad_0x58[0x48];
32+
33+
}; // Size: 0xA0
34+
35+
static_assert(offsetof(Pathfinder, Pathfinder::m_mapPathNodes) == 0x0, "Pathfinder::m_mapPathNodes: Incorrect offset");
36+
static_assert(offsetof(Pathfinder, Pathfinder::m_vecPathNodes) == 0x40, "Pathfinder::m_vecPathNodes: Incorrect offset");
37+
38+
static_assert(sizeof(Pathfinder) == 0xA0, "Pathfinder: Incorrect Size");
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
3+
#include "PhysicsProxy.hpp"
4+
5+
struct AreaTriggerProxy : public PhysicsProxy
6+
{
7+
/* 0x0030 */ __int32 m_areaTriggerId;
8+
private:
9+
/* 0x0034 */ char pad_0x34[0xC];
10+
11+
}; // Size: 0x40
12+
13+
static_assert(offsetof(AreaTriggerProxy, AreaTriggerProxy::m_areaTriggerId) == 0x30, "AreaTriggerProxy::m_areaTriggerId: Incorrect offset");
14+
15+
static_assert(sizeof(AreaTriggerProxy) == 0x40, "AreaTriggerProxy: Incorrect Size");
16+
17+
18+
19+
struct WaterAreaTriggerProxy : public AreaTriggerProxy
20+
{
21+
}; // Size: 0x40
22+
23+
static_assert(sizeof(WaterAreaTriggerProxy) == 0x40, "WaterAreaTriggerProxy: Incorrect Size");

include/SmSdk/PortalManager.hpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#pragma once
2+
3+
#include "SmSdk/AreaTriggerManager.hpp"
4+
5+
#include <DirectXMath.h>
6+
7+
#include <unordered_map>
8+
#include <memory>
9+
10+
struct Portal : public NetObj
11+
{
12+
private:
13+
/* 0x0028 */ char pad_0x28[0x8];
14+
public:
15+
/* 0x0030 */ DirectX::XMFLOAT3 m_position;
16+
private:
17+
/* 0x003C */ char pad_0x3C[0x4];
18+
public:
19+
/* 0x0040 */ AreaTrigger* m_pAreaTriggerA;
20+
/* 0x0048 */ AreaTrigger* m_pAreaTriggerB;
21+
}; // Size: 0x50
22+
23+
static_assert(offsetof(Portal, Portal::m_position) == 0x30, "Portal::m_position: Incorrect offset");
24+
static_assert(offsetof(Portal, Portal::m_pAreaTriggerA) == 0x40, "Portal::m_pAreaTriggerA: Incorrect offset");
25+
static_assert(offsetof(Portal, Portal::m_pAreaTriggerB) == 0x48, "Portal::m_pAreaTriggerB: Incorrect offset");
26+
27+
static_assert(sizeof(Portal) == 0x50, "Portal: Incorrect Size");
28+
29+
30+
31+
struct PortalManager
32+
{
33+
static PortalManager* GetInstance();
34+
35+
/* 0x0000 */ std::unordered_map<int, std::shared_ptr<Portal>> m_mapPortals;
36+
private:
37+
/* 0x0040 */ char pad_0x40[0x58];
38+
39+
}; // Size: 0x98
40+
41+
static_assert(offsetof(PortalManager, PortalManager::m_mapPortals) == 0x0, "PortalManager::m_mapPortals: Incorrect offset");
42+
43+
static_assert(sizeof(PortalManager) == 0x98, "PortalManager: Incorrect Size");

include/SmSdk/bullet_include.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include <BulletDynamics/Dynamics/btRigidBody.h>
1111
#else
1212
struct btRigidBody {};
13+
struct btBoxShape {};
14+
struct btPairCachingGhostObject {};
1315
struct btCollisionObject {};
1416
struct btHingeConstraint {};
1517
struct btCompoundShape {

include/SmSdk/offsets.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
///////STATIC VALUE OFFSETS
44

5+
#define SM_CONTAINER_MANAGER_OFFSET 0x128D770
6+
#define SM_PORTAL_MANAGER_OFFSET 0x128D7D8
7+
#define SM_PATHFINDER_MANAGER_OFFSET 0x128D778
8+
#define SM_AREA_TRIGGER_MANAGER_OFFSET 0x128D7E8
9+
510
#define SM_CURRENT_GAME_STATE_OFFSET 0x128D638
611
#define SM_HARVESTABLE_MANAGER_OFFSET 0x128D8A0
712
#define SM_DIRECTORY_MANAGER_OFFSET 0x128D8F0

src/PointerGetters.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22
#include "SmSdk/Creation/CreationManager.hpp"
33
#include "SmSdk/Gui/GuiSystemManager.hpp"
44
#include "SmSdk/Gui/InGameGuiManager.hpp"
5+
#include "SmSdk/AreaTriggerManager.hpp"
56
#include "SmSdk/DirectoryManager.hpp"
67
#include "SmSdk/CharacterManager.hpp"
8+
#include "SmSdk/ContainerManager.hpp"
79
#include "SmSdk/Physics/Physics.hpp"
10+
#include "SmSdk/PortalManager.hpp"
811
#include "SmSdk/PlayerManager.hpp"
912
#include "SmSdk/NetObjManager.hpp"
1013
#include "SmSdk/AudioManager.hpp"
1114
#include "SmSdk/InputManager.hpp"
1215
#include "SmSdk/StaticValues.hpp"
1316
#include "SmSdk/GameSettings.hpp"
17+
#include "SmSdk/Pathfinder.hpp"
1418
#include "SmSdk/GameState.hpp"
1519
#include "SmSdk/MyPlayer.hpp"
1620

@@ -30,15 +34,19 @@
3034
#define GET_INSTANCE_DEFINE(type, val) PTR_GETTER_DEFINE(type, GetInstance, val)
3135

3236
/////////GETTER DEFINITIONS
33-
37+
38+
GET_INSTANCE_DEFINE(AreaTriggerManager, SM_AREA_TRIGGER_MANAGER_OFFSET);
3439
GET_INSTANCE_DEFINE(HarvestableManager, SM_HARVESTABLE_MANAGER_OFFSET);
35-
GET_INSTANCE_DEFINE(DirectoryManager, SM_DIRECTORY_MANAGER_OFFSET);
3640
GET_INSTANCE_DEFINE(InGameGuiManager, SM_IN_GAME_GUI_MANAGER_OFFSET);
3741
GET_INSTANCE_DEFINE(GuiSystemManager, SM_GUI_SYSTEM_MANAGER_OFFSET);
42+
GET_INSTANCE_DEFINE(ContainerManager, SM_CONTAINER_MANAGER_OFFSET);
43+
GET_INSTANCE_DEFINE(DirectoryManager, SM_DIRECTORY_MANAGER_OFFSET);
3844
GET_INSTANCE_DEFINE(CharacterManager, SM_CHARACTER_MANAGER_OFFSET);
3945
GET_INSTANCE_DEFINE(CreationManager, SM_CREATION_MANAGER_OFFSET);
40-
GET_INSTANCE_DEFINE(PlayerManager, SM_PLAYER_MANAGER_OFFSET);
46+
GET_INSTANCE_DEFINE(Pathfinder, SM_PATHFINDER_MANAGER_OFFSET);
4147
GET_INSTANCE_DEFINE(NetObjManager, SM_NET_OBJ_MANAGER_OFFSET);
48+
GET_INSTANCE_DEFINE(PortalManager, SM_PORTAL_MANAGER_OFFSET);
49+
GET_INSTANCE_DEFINE(PlayerManager, SM_PLAYER_MANAGER_OFFSET);
4250
GET_INSTANCE_DEFINE(AudioManager, SM_AUDIO_MANAGER_OFFSET);
4351
GET_INSTANCE_DEFINE(InputManager, SM_INPUT_MANAGER_OFFSET);
4452
GET_INSTANCE_DEFINE(GameSettings, SM_GAME_SETTINGS_OFFSET);

0 commit comments

Comments
 (0)