mirror of https://github.com/zeldaret/botw.git
ksys/act: Add more ParamPack functions
This commit is contained in:
parent
d3b065bfa2
commit
49097ad9e6
|
@ -73057,23 +73057,23 @@
|
||||||
0x0000007100d175d4,ai::ParamPack::ctor,8,_ZN4ksys3act2ai9ParamPackC1Ev
|
0x0000007100d175d4,ai::ParamPack::ctor,8,_ZN4ksys3act2ai9ParamPackC1Ev
|
||||||
0x0000007100d175dc,ai::ParamPack::dtor,152,_ZN4ksys3act2ai9ParamPackD1Ev
|
0x0000007100d175dc,ai::ParamPack::dtor,152,_ZN4ksys3act2ai9ParamPackD1Ev
|
||||||
0x0000007100d17674,ai::ParamPack::x,184,
|
0x0000007100d17674,ai::ParamPack::x,184,
|
||||||
0x0000007100d1772c,ai::ParamPack::getAITreeVariablePointer,116,
|
0x0000007100d1772c,ai::ParamPack::getAITreeVariablePointer,116,_ZNK4ksys3act2ai9ParamPack24getAITreeVariablePointerERKN4sead14SafeStringBaseIcEENS_14AIDefParamTypeEb
|
||||||
0x0000007100d177a0,ai::ParamPack::loadFromInlineParamPack,1132,
|
0x0000007100d177a0,ai::ParamPack::loadFromInlineParamPack,1132,
|
||||||
0x0000007100d17c0c,ai::InlineParamPack::addInt,116,
|
0x0000007100d17c0c,ai::InlineParamPack::addInt,116,_ZN4ksys3act2ai15InlineParamPack6addIntEiRKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d17c80,ai::InlineParamPack::addFloat,116,
|
0x0000007100d17c80,ai::InlineParamPack::addFloat,116,_ZN4ksys3act2ai15InlineParamPack8addFloatEfRKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d17cf4,ai::InlineParamPack::addFloatArray,144,
|
0x0000007100d17cf4,ai::InlineParamPack::addFloatArray,144,_ZN4ksys3act2ai15InlineParamPack7addVec3ERKN4sead7Vector3IfEERKNS3_14SafeStringBaseIcEEi
|
||||||
0x0000007100d17d84,ai::InlineParamPack::addBool,116,
|
0x0000007100d17d84,ai::InlineParamPack::addBool,116,_ZN4ksys3act2ai15InlineParamPack7addBoolEbRKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d17df8,ai::InlineParamPack::addActor,132,
|
0x0000007100d17df8,ai::InlineParamPack::addActor,132,_ZN4ksys3act2ai15InlineParamPack8addActorERKNS0_12BaseProcLinkERKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d17e7c,ai::InlineParamPack::addMesTransceiverId,152,
|
0x0000007100d17e7c,ai::InlineParamPack::addMesTransceiverId,152,_ZN4ksys3act2ai15InlineParamPack19addMesTransceiverIdERKNS_3mes13TransceiverIdERKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d17f14,sub_7100D17F14,112,
|
0x0000007100d17f14,sub_7100D17F14,112,
|
||||||
0x0000007100d17f84,sub_7100D17F84,432,
|
0x0000007100d17f84,sub_7100D17F84,432,
|
||||||
0x0000007100d18134,ai::ParamPack::getString,160,
|
0x0000007100d18134,ai::ParamPack::getString,160,_ZNK4ksys3act2ai9ParamPack9getStringEPN4sead14SafeStringBaseIcEERKS5_
|
||||||
0x0000007100d181d4,ai::ParamPack::getString_0,316,
|
0x0000007100d181d4,ai::ParamPack::getString_0,316,_ZNK4ksys3act2ai9ParamPack9setStringERKN4sead14SafeStringBaseIcEES7_
|
||||||
0x0000007100d18310,ai::ParamPack::getBaseProcLink_0,120,
|
0x0000007100d18310,ai::ParamPack::getBaseProcLink_0,120,_ZNK4ksys3act2ai9ParamPack8getActorEPNS0_8BaseProcERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007100d18388,ai::ParamPack::getBaseProcLink,116,
|
0x0000007100d18388,ai::ParamPack::getBaseProcLink,116,_ZNK4ksys3act2ai9ParamPack8setActorERKNS0_12BaseProcLinkERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007100d183fc,ai::ParamPack::allocAndLoadParams,1312,
|
0x0000007100d183fc,ai::ParamPack::allocAndLoadParams,1312,
|
||||||
0x0000007100d1891c,ai::InlineParamPack::addString,132,
|
0x0000007100d1891c,ai::InlineParamPack::addString,132,_ZN4ksys3act2ai15InlineParamPack10addPointerEPvRKN4sead14SafeStringBaseIcEENS_14AIDefParamTypeEi
|
||||||
0x0000007100d189a0,sub_7100D189A0,136,
|
0x0000007100d189a0,sub_7100D189A0,136,_ZN4ksys3act2ai15InlineParamPack12acquireActorEPNS0_8BaseProcERKN4sead14SafeStringBaseIcEEi
|
||||||
0x0000007100d18a28,ai::InlineParamPack::copyToParamPack,1204,_ZNK4ksys3act2ai15InlineParamPack15copyToParamPackERNS1_9ParamPackE
|
0x0000007100d18a28,ai::InlineParamPack::copyToParamPack,1204,_ZNK4ksys3act2ai15InlineParamPack15copyToParamPackERNS1_9ParamPackE
|
||||||
0x0000007100d18edc,j__ZdlPv_839,4,
|
0x0000007100d18edc,j__ZdlPv_839,4,
|
||||||
0x0000007100d18ee0,_ZN4sead19FixedSafeStringBaseIcLi5EEaSERKNS_14SafeStringBaseIcEE,240,
|
0x0000007100d18ee0,_ZN4sead19FixedSafeStringBaseIcLi5EEaSERKNS_14SafeStringBaseIcEE,240,
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -53,6 +53,101 @@ ParamPack::~ParamPack() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* ParamPack::getAITreeVariablePointer(const sead::SafeString& key, AIDefParamType type,
|
||||||
|
bool x) const {
|
||||||
|
return getVariable<void>(key, type, x);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addInt(s32 value, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.i = value;
|
||||||
|
param.type = AIDefParamType::Int;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addFloat(f32 value, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.f = value;
|
||||||
|
param.type = AIDefParamType::Float;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addVec3(const sead::Vector3f& value, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.vec3 = value;
|
||||||
|
param.type = AIDefParamType::Vec3;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addBool(bool value, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.b = value;
|
||||||
|
param.type = AIDefParamType::Bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addActor(const BaseProcLink& value, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.baseProcLink = value;
|
||||||
|
param.type = AIDefParamType::BaseProcLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addMesTransceiverId(const mes::TransceiverId& value,
|
||||||
|
const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.mesTransceiverId = value;
|
||||||
|
param.type = AIDefParamType::MesTransceiverId;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ParamPack::getString(sead::SafeString* value, const sead::SafeString& key) const {
|
||||||
|
auto* str = getVariable<sead::SafeString>(key, AIDefParamType::String, false);
|
||||||
|
if (!str)
|
||||||
|
return false;
|
||||||
|
*value = str->cstr();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ParamPack::setString(const sead::SafeString& value, const sead::SafeString& key) const {
|
||||||
|
auto* str = getVariable<sead::BufferedSafeString>(key, AIDefParamType::String);
|
||||||
|
if (!str)
|
||||||
|
return false;
|
||||||
|
str->copy(value);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ParamPack::getActor(BaseProc* proc, const sead::SafeString& key) const {
|
||||||
|
auto* link = getVariable<BaseProcLink>(key, AIDefParamType::BaseProcLink);
|
||||||
|
if (!link)
|
||||||
|
return false;
|
||||||
|
link->acquire(proc, false);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ParamPack::setActor(const BaseProcLink& new_link, const sead::SafeString& key) const {
|
||||||
|
auto* link = getVariable<BaseProcLink>(key, AIDefParamType::BaseProcLink);
|
||||||
|
if (!link)
|
||||||
|
return false;
|
||||||
|
*link = new_link;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::addPointer(void* value, const sead::SafeString& key, AIDefParamType type,
|
||||||
|
s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.ptr = value;
|
||||||
|
param.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InlineParamPack::acquireActor(BaseProc* proc, const sead::SafeString& key, s32 idx) {
|
||||||
|
auto& param = getParam(idx);
|
||||||
|
param.key = key.cstr();
|
||||||
|
param.baseProcLink.acquire(proc, false);
|
||||||
|
param.type = AIDefParamType::BaseProcLink;
|
||||||
|
}
|
||||||
|
|
||||||
void InlineParamPack::copyToParamPack(ParamPack& pack) const {
|
void InlineParamPack::copyToParamPack(ParamPack& pack) const {
|
||||||
const u32 n = count >= 0x1F ? 0x1F : count;
|
const u32 n = count >= 0x1F ? 0x1F : count;
|
||||||
const InlineParam* param = params;
|
const InlineParam* param = params;
|
||||||
|
|
|
@ -57,6 +57,14 @@ public:
|
||||||
*variable = val;
|
*variable = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* getAITreeVariablePointer(const sead::SafeString& key, AIDefParamType type, bool x) const;
|
||||||
|
|
||||||
|
bool getString(sead::SafeString* value, const sead::SafeString& key) const;
|
||||||
|
bool setString(const sead::SafeString& value, const sead::SafeString& key) const;
|
||||||
|
|
||||||
|
bool getActor(BaseProc* proc, const sead::SafeString& key) const;
|
||||||
|
bool setActor(const BaseProcLink& link, const sead::SafeString& key) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Param* mParams = nullptr;
|
Param* mParams = nullptr;
|
||||||
};
|
};
|
||||||
|
@ -79,9 +87,29 @@ struct InlineParam {
|
||||||
KSYS_CHECK_SIZE_NX150(InlineParam, 0x50);
|
KSYS_CHECK_SIZE_NX150(InlineParam, 0x50);
|
||||||
|
|
||||||
struct InlineParamPack {
|
struct InlineParamPack {
|
||||||
|
InlineParam& getParam(s32 idx) {
|
||||||
|
if (idx < 0) {
|
||||||
|
idx = count;
|
||||||
|
if (count > NumParamsMax - 1)
|
||||||
|
idx = 0;
|
||||||
|
else
|
||||||
|
count = idx + 1;
|
||||||
|
}
|
||||||
|
return params[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
void addInt(s32 value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addFloat(f32 value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addVec3(const sead::Vector3f& value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addBool(bool value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addActor(const BaseProcLink& value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addMesTransceiverId(const mes::TransceiverId& value, const sead::SafeString& key, s32 idx);
|
||||||
|
void addPointer(void* value, const sead::SafeString& key, AIDefParamType type, s32 idx);
|
||||||
|
void acquireActor(BaseProc* proc, const sead::SafeString& key, s32 idx);
|
||||||
void copyToParamPack(ParamPack& pack) const;
|
void copyToParamPack(ParamPack& pack) const;
|
||||||
|
|
||||||
InlineParam params[32];
|
static constexpr s32 NumParamsMax = 32;
|
||||||
|
InlineParam params[NumParamsMax];
|
||||||
int count;
|
int count;
|
||||||
};
|
};
|
||||||
KSYS_CHECK_SIZE_NX150(InlineParamPack, 0xA08);
|
KSYS_CHECK_SIZE_NX150(InlineParamPack, 0xA08);
|
||||||
|
|
Loading…
Reference in New Issue