summaryrefslogtreecommitdiff
path: root/src/KingSystem/Physics/System/physSystemData.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-10-30 12:38:27 +0200
committerLéo Lam <leo@leolam.fr>2021-10-30 16:17:39 +0200
commitd10dd65dcd371c87012b31700a871a8d6c5a9aa1 (patch)
treee054c0b585b6daead48586330bc348bc58cf3c16 /src/KingSystem/Physics/System/physSystemData.cpp
parent70aaa429fe82098d954d0945bfb1b8253a7fa45a (diff)
ksys/phys: Add some prerequisites for ContactInfoTable
Diffstat (limited to 'src/KingSystem/Physics/System/physSystemData.cpp')
-rw-r--r--src/KingSystem/Physics/System/physSystemData.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/KingSystem/Physics/System/physSystemData.cpp b/src/KingSystem/Physics/System/physSystemData.cpp
index 097b6a4b..41f3845e 100644
--- a/src/KingSystem/Physics/System/physSystemData.cpp
+++ b/src/KingSystem/Physics/System/physSystemData.cpp
@@ -1,4 +1,5 @@
#include "KingSystem/Physics/System/physSystemData.h"
+#include "KingSystem/Physics/System/physContactInfoTable.h"
#include "KingSystem/Physics/System/physMaterialTable.h"
#include "KingSystem/Physics/System/physRagdollControllerKeyList.h"
#include "KingSystem/Resource/resHandle.h"
@@ -38,12 +39,12 @@ SystemData::~SystemData() {
void SystemData::load(sead::Heap* heap, LayerTable* entity_layer_table,
LayerTable* sensor_layer_table, MaterialTable* material_table,
ContactInfoTable* contact_info_table) {
- loadLayerTable(heap, entity_layer_table, LayerTableType::Entity);
- loadLayerTable(heap, sensor_layer_table, LayerTableType::Sensor);
+ loadLayerTable(heap, entity_layer_table, ContactLayerType::Entity);
+ loadLayerTable(heap, sensor_layer_table, ContactLayerType::Sensor);
loadMaterialTable(heap, material_table);
loadSubMaterialTable(heap, material_table);
- loadContactInfoTable(heap, contact_info_table, LayerTableType::Entity);
- loadContactInfoTable(heap, contact_info_table, LayerTableType::Sensor);
+ loadContactInfoTable(heap, contact_info_table, ContactLayerType::Entity);
+ loadContactInfoTable(heap, contact_info_table, ContactLayerType::Sensor);
loadCharacterCtrlTable(heap);
loadRagdollCtrlKeyList(heap);
}
@@ -54,6 +55,19 @@ void SystemData::loadMaterialTable(sead::Heap* heap, MaterialTable* table) {
table->loadMaterialTable(heap, res);
}
+void SystemData::loadSubMaterialTable(sead::Heap* heap, MaterialTable* table) {
+ mSubMaterialTableHandle = new (heap) res::Handle;
+ const auto res = loadSubMaterialTableRes();
+ table->loadSubMaterialTable(heap, res);
+}
+
+void SystemData::loadContactInfoTable(sead::Heap* heap, ContactInfoTable* table,
+ ContactLayerType type) {
+ mContactInfoTableHandles[int(type)] = new (heap) res::Handle;
+ const auto res = loadContactInfoTableRes(type);
+ table->load(heap, res, type);
+}
+
void SystemData::loadCharacterCtrlTable(sead::Heap* heap) {
mCharacterCtrlTable.addList("CharacterControllerTable");
@@ -83,15 +97,15 @@ void SystemData::loadRagdollCtrlKeyList(sead::Heap* heap) {
agl::utl::ResParameterArchive
SystemData::loadLayerTableRes(const SystemData::LayerTableInfoContainer& container,
- SystemData::LayerTableType type) {
+ ContactLayerType type) {
res::LoadRequest request;
request.mRequester = "physSystemData";
const char* path{};
switch (type) {
- case LayerTableType::Entity:
+ case ContactLayerType::Entity:
path = "Physics/System/EntityLayerTable.bphyslayer";
break;
- case LayerTableType::Sensor:
+ case ContactLayerType::Sensor:
path = "Physics/System/SensorLayerTable.bphyslayer";
break;
}
@@ -118,15 +132,15 @@ agl::utl::ResParameterArchive SystemData::loadSubMaterialTableRes() {
return agl::utl::ResParameterArchive{direct_resource->getRawData()};
}
-agl::utl::ResParameterArchive SystemData::loadContactInfoTableRes(SystemData::LayerTableType type) {
+agl::utl::ResParameterArchive SystemData::loadContactInfoTableRes(ContactLayerType type) {
res::LoadRequest request;
request.mRequester = "physSystemData";
const char* path{};
switch (type) {
- case LayerTableType::Entity:
+ case ContactLayerType::Entity:
path = "Physics/System/EntityContactInfoTable.bphyscontact";
break;
- case LayerTableType::Sensor:
+ case ContactLayerType::Sensor:
path = "Physics/System/SensorContactInfoTable.bphyscontact";
break;
}