From 4bb4c935a693f8e26c5ab4cc3a3ab6a96b97fe09 Mon Sep 17 00:00:00 2001 From: theo3 Date: Sat, 17 Oct 2020 01:04:04 -0700 Subject: [PATCH] decompiled resResourceAwareness --- data/uking_functions.csv | 36 ++++---- src/KingSystem/Resource/CMakeLists.txt | 2 + .../Resource/resResourceAwareness.cpp | 89 +++++++++++++++++++ .../Resource/resResourceAwareness.h | 86 ++++++++++++++++++ 4 files changed, 195 insertions(+), 18 deletions(-) create mode 100644 src/KingSystem/Resource/resResourceAwareness.cpp create mode 100644 src/KingSystem/Resource/resResourceAwareness.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 510a5228..6e2de4f4 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -88940,7 +88940,7 @@ 0x00000071011829dc,sub_71011829DC,376, 0x0000007101182b54,sub_7101182B54,8, 0x0000007101182b5c,sub_7101182B5C,8, -0x0000007101182b64,Bawareness::ctor,1260, +0x0000007101182b64,Bawareness::ctor,1260,_ZN4ksys3res9AwarenessC1Ev 0x0000007101183050,sub_7101183050,372, 0x00000071011831c4,sub_71011831C4,380, 0x0000007101183340,sub_7101183340,132, @@ -94275,23 +94275,23 @@ 0x00000071012f50c0,sub_71012F50C0,92, 0x00000071012f511c,j__ZdlPv_1321,4, 0x00000071012f5120,sub_71012F5120,8, -0x00000071012f529c,nullsub_4833,4, -0x00000071012f52a0,nullsub_4834,4, -0x00000071012f52a4,Bawareness::parse,5992, -0x00000071012f6a0c,ResourceBawareness::parse,28, -0x00000071012f6a28,sub_71012F6A28,336, -0x00000071012f6b78,sub_71012F6B78,324, -0x00000071012f6cbc,sub_71012F6CBC,8, -0x00000071012f6cc4,sub_71012F6CC4,8, -0x00000071012f6ccc,sub_71012F6CCC,92, -0x00000071012f6d28,sub_71012F6D28,8, -0x00000071012f6d30,sub_71012F6D30,8, -0x00000071012f6d38,sub_71012F6D38,92, -0x00000071012f6d94,sub_71012F6D94,332, -0x00000071012f6ee0,sub_71012F6EE0,320, -0x00000071012f7020,sub_71012F7020,8, -0x00000071012f7028,sub_71012F7028,340, -0x00000071012f717c,sub_71012F717C,328, +0x00000071012f529c,nullsub_4833,4,_ZN4ksys3res9Awareness9doCreate_EPhjPN4sead4HeapE +0x00000071012f52a0,nullsub_4834,4,_ZThn632_N4ksys3res9Awareness9doCreate_EPhjPN4sead4HeapE +0x00000071012f52a4,Bawareness::parse,5992,_ZN4ksys3res9Awareness6parse_EPhmPN4sead4HeapE +0x00000071012f6a0c,ResourceBawareness::parse,28,_ZThn632_N4ksys3res9Awareness6parse_EPhmPN4sead4HeapE +0x00000071012f6a28,sub_71012F6A28,336,_ZN4ksys3res9AwarenessD2Ev +0x00000071012f6b78,sub_71012F6B78,324,_ZN4ksys3res9AwarenessD0Ev +0x00000071012f6cbc,sub_71012F6CBC,8,_ZN4ksys3res9Awareness10ParamIO_m0Ev +0x00000071012f6cc4,sub_71012F6CC4,8,_ZNK4ksys3res9Awareness27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE? +0x00000071012f6ccc,sub_71012F6CCC,92,_ZNK4ksys3res9Awareness18getRuntimeTypeInfoEv +0x00000071012f6d28,sub_71012F6D28,8,_ZNK4ksys3res9Awareness10needsParseEv +0x00000071012f6d30,sub_71012F6D30,8,_ZThn632_NK4ksys3res9Awareness27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE? +0x00000071012f6d38,sub_71012F6D38,92,_ZThn632_NK4ksys3res9Awareness18getRuntimeTypeInfoEv +0x00000071012f6d94,sub_71012F6D94,332,_ZThn632_N4ksys3res9AwarenessD1Ev +0x00000071012f6ee0,sub_71012F6EE0,320,_ZThn632_N4ksys3res9AwarenessD0Ev +0x00000071012f7020,sub_71012F7020,8,_ZThn632_NK4ksys3res9Awareness10needsParseEv +0x00000071012f7028,sub_71012F7028,340,_ZThn664_N4ksys3res9AwarenessD1Ev +0x00000071012f717c,sub_71012F717C,328,_ZThn664_N4ksys3res9AwarenessD0Ev 0x00000071012f7438,sub_71012F7438,520, 0x00000071012f7640,sub_71012F7640,940, 0x00000071012f79ec,sub_71012F79EC,8, diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt index abf6860e..598157a9 100644 --- a/src/KingSystem/Resource/CMakeLists.txt +++ b/src/KingSystem/Resource/CMakeLists.txt @@ -128,6 +128,8 @@ target_sources(uking PRIVATE resResourceAIProgram.h resResourceArchive.cpp resResourceArchive.h + resResourceAwareness.cpp + resResourceAwareness.h resResourceDemo.cpp resResourceDemo.h resResourceDrop.cpp diff --git a/src/KingSystem/Resource/resResourceAwareness.cpp b/src/KingSystem/Resource/resResourceAwareness.cpp new file mode 100644 index 00000000..855d7a9a --- /dev/null +++ b/src/KingSystem/Resource/resResourceAwareness.cpp @@ -0,0 +1,89 @@ +#include "KingSystem/Resource/resResourceAwareness.h" + +namespace ksys::res { + +Awareness::Awareness() : ParamIO("awareness", 0) {} + +bool Awareness::parse_(u8* data, size_t, sead::Heap*) { + addObj(&mBasisObj, "Basis"); + addObj(&mSightObj, "Sight"); + addObj(&mHearingObj, "Hearing"); + addObj(&mSenseObj, "Sense"); + addObj(&mWorryObj, "Worry"); + + contactpoint_num.init(64, "contactpoint_num", "センサーに引っ掛けるバッファの数", &mBasisObj); + base_node_name.init(sead::FixedSafeString<32>(""), "base_node_name", "前方基準ノード", + &mBasisObj); + is_bind_rot.init(false, "is_bind_rot", "姿勢を追従させる", &mBasisObj); + is_bind_pos.init(false, "is_bind_pos", "位置を追従させる", &mBasisObj); + base_offset.init(sead::Vector3f::zero, "base_offset", "位置オフセット", &mBasisObj); + base_dir.init(2, "base_dir", "基準方向", &mBasisObj); + up_dir.init(6, "up_dir", "UP方向", &mBasisObj); + awareness_target.init(sead::FixedSafeString<32>("一般敵"), "awareness_target", "種別設定", + &mBasisObj); + interest_lv1_radius.init(5.0, "interest_lv1_radius", "興味値用接近距離", &mBasisObj); + system_radius.init(0.0, "system_radius", "システム半径(プログラマ設定用)", &mBasisObj); + invalidate_wheather_ratio.init(false, "invalidate_wheather_ratio", "天候影響無視", &mBasisObj); + + sight_buffer_num.init(32, "sight_buffer_num", "情報を格納するバッファの数", &mSightObj); + sight_radius.init(15.0, "sight_radius", "発見水平範囲", &mSightObj); + sight_angle.init(1.04719758034, "sight_angle", "発見有効角度", &mSightObj); + sight_height_max.init(4.0, "sight_height_max", "発見垂直範囲最大", &mSightObj); + sight_height_min.init(-2.0, "sight_height_min", "発見垂直範囲最小", &mSightObj); + sight_height_near_max.init(4.0, "sight_height_near_max", "至近発見垂直範囲最大", &mSightObj); + sight_height_near_min.init(-2.0, "sight_height_near_min", "至近発見垂直範囲最小", &mSightObj); + sight_alert_radius.init(0.0, "sight_alert_radius", "警戒水平範囲", &mSightObj); + sight_alert_angle.init(0.0, "sight_alert_angle", "警戒有効角度", &mSightObj); + sight_alert_height_max.init(0.0, "sight_alert_height_max", "警戒垂直範囲最大", &mSightObj); + sight_alert_height_min.init(0.0, "sight_alert_height_min", "警戒垂直範囲最小", &mSightObj); + sight_alert_height_near_max.init(0.0, "sight_alert_height_near_max", "至近警戒垂直範囲最大", + &mSightObj); + sight_alert_height_near_min.init(0.0, "sight_alert_height_near_min", "至近警戒垂直範囲最小", + &mSightObj); + sight_ignore_grass_radius.init(2.0, "sight_ignore_grass_radius", "草無視範囲", &mSightObj); + sight_delay_time_max.init(0, "sight_delay_time_max", "認識遅延時間最大", &mSightObj); + sight_ray_check_range_max.init(-1.0, "sight_ray_check_range_max", "レイキャストの長さ制限値", + &mSightObj); + sight_base_node_name.init(sead::FixedSafeString<32>(""), "sight_base_node_name", + "(上書き用)前方基準ノード", &mSightObj); + sight_far_use.init(false, "sight_far_use", "遠距離視界を使う", &mSightObj); + sight_radius_far.init(0.0, "sight_radius_far", "遠距離開始距離", &mSightObj); + sight_angle_far.init(1.04719758034, "sight_angle_far", "遠距離発見有効角度", &mSightObj); + + hearing_buffer_num.init(32, "hearing_buffer_num", "情報を格納するバッファの数", &mHearingObj); + hearing_radius.init(15.0, "hearing_radius", "半径", &mHearingObj); + hearing_notice_level.init(1.0, "hearing_notice_level", "発見状態になるノイズレベル", + &mHearingObj); + hearing_alert_level.init(0.40000000596, "hearing_alert_level", "警戒状態になるノイズレベル", + &mHearingObj); + hearing_blind_angle.init(0.0, "hearing_blind_angle", "死角角度", &mHearingObj); + hearing_blind_margin_angle.init(0.0, "hearing_blind_margin_angle", "死角入り角度", + &mHearingObj); + hearing_reduce_ratio.init(0.0, "hearing_reduce_ratio", "死角に入られた際のノイズ反応倍率", + &mHearingObj); + hearing_delay_time_max.init(0, "hearing_delay_time_max", "認識遅延時間最大", &mHearingObj); + hearing_base_node_name.init(sead::FixedSafeString<32>(""), "hearing_base_node_name", + "(上書き用)前方基準ノード", &mHearingObj); + + sense_buffer_num.init(32, "sense_buffer_num", "情報を格納するバッファの数", &mSenseObj); + sense_target.init(sead::FixedSafeString<32>("Enemy"), "sense_target", "テラー受付設定", + &mSenseObj); + sense_radius_offset.init(0.0, "sense_radius_offset", "水平範囲オフセット", &mSenseObj); + sense_angle.init(3.14159274101, "sense_angle", "有効角度", &mSenseObj); + sense_delay_time_max.init(0, "sense_delay_time_max", "認識遅延時間最大", &mSenseObj); + sense_base_node_name.init(sead::FixedSafeString<32>(""), "sense_base_node_name", + "(上書き用)前方基準ノード", &mSenseObj); + + worry_buffer_num.init(0, "worry_buffer_num", "情報を格納するバッファの数", &mWorryObj); + worry_radius.init(0.0, "worry_radius", "範囲", &mWorryObj); + worry_delay_time_max.init(0, "worry_delay_time_max", "認識遅延時間最大", &mWorryObj); + worry_base_node_name.init(sead::FixedSafeString<32>(""), "worry_base_node_name", + "(上書き用)前方基準ノード", &mWorryObj); + + if (data) + applyResParameterArchive(agl::utl::ResParameterArchive(data)); + + return true; +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceAwareness.h b/src/KingSystem/Resource/resResourceAwareness.h new file mode 100644 index 00000000..07c1b86c --- /dev/null +++ b/src/KingSystem/Resource/resResourceAwareness.h @@ -0,0 +1,86 @@ +#pragma once + +#include +#include +#include "KingSystem/Resource/resResource.h" +#include "KingSystem/Utils/ParamIO.h" + +namespace ksys::res { + +class Awareness : public ParamIO, public Resource { + SEAD_RTTI_OVERRIDE(Awareness, Resource) +public: + Awareness(); + ~Awareness() override = default; + + bool needsParse() const override { return true; } + bool ParamIO_m0() override { return true; } + +private: + void doCreate_(u8*, u32, sead::Heap*) override {} + bool parse_(u8* data, size_t size, sead::Heap* heap) override; + + agl::utl::ParameterObj mBasisObj; + agl::utl::ParameterObj mSightObj; + agl::utl::ParameterObj mHearingObj; + agl::utl::ParameterObj mSenseObj; + agl::utl::ParameterObj mWorryObj; + +public: + agl::utl::Parameter contactpoint_num; + agl::utl::Parameter> base_node_name; + agl::utl::Parameter is_bind_rot; + agl::utl::Parameter is_bind_pos; + agl::utl::Parameter base_offset; + agl::utl::Parameter base_dir; + agl::utl::Parameter up_dir; + agl::utl::Parameter> awareness_target; + agl::utl::Parameter interest_lv1_radius; + agl::utl::Parameter system_radius; + agl::utl::Parameter invalidate_wheather_ratio; + + agl::utl::Parameter sight_buffer_num; + agl::utl::Parameter sight_radius; + agl::utl::Parameter sight_angle; + agl::utl::Parameter sight_height_max; + agl::utl::Parameter sight_height_min; + agl::utl::Parameter sight_height_near_max; + agl::utl::Parameter sight_height_near_min; + agl::utl::Parameter sight_alert_radius; + agl::utl::Parameter sight_alert_angle; + agl::utl::Parameter sight_alert_height_max; + agl::utl::Parameter sight_alert_height_min; + agl::utl::Parameter sight_alert_height_near_max; + agl::utl::Parameter sight_alert_height_near_min; + agl::utl::Parameter sight_ignore_grass_radius; + agl::utl::Parameter sight_delay_time_max; + agl::utl::Parameter sight_ray_check_range_max; + agl::utl::Parameter> sight_base_node_name; + agl::utl::Parameter sight_far_use; + agl::utl::Parameter sight_radius_far; + agl::utl::Parameter sight_angle_far; + + agl::utl::Parameter hearing_buffer_num; + agl::utl::Parameter hearing_radius; + agl::utl::Parameter hearing_notice_level; + agl::utl::Parameter hearing_alert_level; + agl::utl::Parameter hearing_blind_angle; + agl::utl::Parameter hearing_blind_margin_angle; + agl::utl::Parameter hearing_reduce_ratio; + agl::utl::Parameter hearing_delay_time_max; + agl::utl::Parameter> hearing_base_node_name; + + agl::utl::Parameter sense_buffer_num; + agl::utl::Parameter> sense_target; + agl::utl::Parameter sense_radius_offset; + agl::utl::Parameter sense_angle; + agl::utl::Parameter sense_delay_time_max; + agl::utl::Parameter> sense_base_node_name; + + agl::utl::Parameter worry_buffer_num; + agl::utl::Parameter worry_radius; + agl::utl::Parameter worry_delay_time_max; + agl::utl::Parameter> worry_base_node_name; +}; + +} // namespace ksys::res