mirror of https://github.com/zeldaret/botw.git
56 lines
2.0 KiB
C++
56 lines
2.0 KiB
C++
#include "KingSystem/Physics/System/physRagdollControllerKeyList.h"
|
|
|
|
namespace ksys::phys {
|
|
|
|
RagdollControllerKeyList::RagdollControllerKey::RagdollControllerKey()
|
|
: key(sead::SafeString::cEmptyString, "key", this), hierarchy_gain(0, "hierarchy_gain", this),
|
|
velocity_damping(0, "velocity_damping", this),
|
|
acceleration_gain(0, "acceleration_gain", this), velocity_gain(0, "velocity_gain", this),
|
|
position_gain(0, "position_gain", this),
|
|
position_max_linear_velocity(0, "position_max_linear_velocity", this),
|
|
position_max_angular_velocity(0, "position_max_angular_velocity", this),
|
|
snap_gain(0, "snap_gain", this),
|
|
snap_max_linear_velocity(0, "snap_max_linear_velocity", this),
|
|
snap_max_angular_velocity(0, "snap_max_angular_velocity", this),
|
|
snap_max_linear_distance(0, "snap_max_linear_distance", this),
|
|
snap_max_angular_distance(0, "snap_max_angular_distance", this) {}
|
|
|
|
RagdollControllerKeyList::RagdollControllerKeyList() = default;
|
|
RagdollControllerKeyList::~RagdollControllerKeyList() {
|
|
buffer.freeBuffer();
|
|
}
|
|
|
|
RagdollControllerKeyList::RagdollControllerKey*
|
|
RagdollControllerKeyList::getControllerKeyByKey(const sead::SafeString& key) {
|
|
int buffer_size = buffer.size();
|
|
for (int i = 0; i < buffer_size; i++) {
|
|
if (buffer[i].key.ref() == key) {
|
|
return &buffer[i];
|
|
}
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
bool RagdollControllerKeyList::parse_(u8* data, size_t actualFileSize, sead::Heap* heap) {
|
|
if (!data)
|
|
return false;
|
|
|
|
auto archive = agl::utl::ResParameterArchive(data);
|
|
auto key_list = agl::utl::getResParameterList(archive.getRootList(), "RagCtrlKeyList");
|
|
if (!key_list)
|
|
return false;
|
|
|
|
int key_count = key_list.getResParameterObjNum();
|
|
if (key_count == 0)
|
|
return false;
|
|
|
|
buffer.allocBufferAssert(key_count, heap);
|
|
|
|
for (int i = 0; i < key_count; i++) {
|
|
buffer[i].applyResParameterObj(key_list.getResParameterObj(i));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
} // namespace ksys::phys
|