summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-01-01 18:37:37 +0100
committerLéo Lam <leo@leolam.fr>2021-01-01 19:00:46 +0100
commitcb33d236a3286ef5660a712b4b065d413e41f21f (patch)
treea0a53d2236326295487b94d01991f10e4ff37c93 /src
parentf621d136c07a17bfdc0856e4943fa30c1a8c2749 (diff)
uking: Implement GameDataAddVec3 action
Diffstat (limited to 'src')
-rw-r--r--src/Game/AI/Action/actionGameDataAddVec3.cpp23
-rw-r--r--src/Game/AI/Action/actionGameDataAddVec3.h1
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: