diff options
| author | Léo Lam <leo@leolam.fr> | 2021-01-01 18:37:37 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-01-01 19:00:46 +0100 |
| commit | cb33d236a3286ef5660a712b4b065d413e41f21f (patch) | |
| tree | a0a53d2236326295487b94d01991f10e4ff37c93 /src | |
| parent | f621d136c07a17bfdc0856e4943fa30c1a8c2749 (diff) | |
uking: Implement GameDataAddVec3 action
Diffstat (limited to 'src')
| -rw-r--r-- | src/Game/AI/Action/actionGameDataAddVec3.cpp | 23 | ||||
| -rw-r--r-- | src/Game/AI/Action/actionGameDataAddVec3.h | 1 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/Game/AI/Action/actionGameDataAddVec3.cpp b/src/Game/AI/Action/actionGameDataAddVec3.cpp index 1e67aefd..dfacde0d 100644 --- a/src/Game/AI/Action/actionGameDataAddVec3.cpp +++ b/src/Game/AI/Action/actionGameDataAddVec3.cpp @@ -1,4 +1,5 @@ #include "Game/AI/Action/actionGameDataAddVec3.h" +#include "KingSystem/GameData/gdtManager.h" namespace uking::action { @@ -10,6 +11,28 @@ bool GameDataAddVec3::init_(sead::Heap* heap) { return ksys::act::ai::Action::init_(heap); } +bool GameDataAddVec3::oneShot_() { + auto* gdm = ksys::gdt::Manager::instance(); + if (!gdm) { + setFailed(); + mFlags.set(Flag::_4); + return false; + } + + auto src = sead::Vector3f::zero; + auto dst = sead::Vector3f::zero; + if (gdm->getParam().get().getVec3f(&src, mGameDataVec3fSrcName_d)) { + if (gdm->getParam().get().getVec3f(&dst, mGameDataVec3fDstName_d)) { + src.x = src.x + dst.x; + src.y = src.y + dst.y; + src.z = src.z + dst.z; + } + gdm->setVec3f(src, mGameDataVec3fToName_d); + } + + return true; +} + void GameDataAddVec3::loadParams_() { getDynamicParam(&mGameDataVec3fSrcName_d, "GameDataVec3fSrcName"); getDynamicParam(&mGameDataVec3fDstName_d, "GameDataVec3fDstName"); diff --git a/src/Game/AI/Action/actionGameDataAddVec3.h b/src/Game/AI/Action/actionGameDataAddVec3.h index 1fe2cda1..56939cd6 100644 --- a/src/Game/AI/Action/actionGameDataAddVec3.h +++ b/src/Game/AI/Action/actionGameDataAddVec3.h @@ -11,6 +11,7 @@ public: ~GameDataAddVec3() override; bool init_(sead::Heap* heap) override; + bool oneShot_() override; void loadParams_() override; protected: |
