diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.cpp index e6c28a3991..4bda47b73e 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h" +#include "VideoCommon/GraphicsModEditor/EditorEvents.h" #include @@ -39,9 +40,18 @@ MoveAction::MoveAction(Common::Vec3 position_offset) : m_position_offset(positio void MoveAction::DrawImGui() { - ImGui::InputFloat("X", &m_position_offset.x); - ImGui::InputFloat("Y", &m_position_offset.y); - ImGui::InputFloat("Z", &m_position_offset.z); + if (ImGui::InputFloat("X", &m_position_offset.x)) + { + GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger(); + } + if (ImGui::InputFloat("Y", &m_position_offset.y)) + { + GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger(); + } + if (ImGui::InputFloat("Z", &m_position_offset.z)) + { + GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger(); + } } void MoveAction::OnProjection(GraphicsModActionData::Projection* projection) @@ -67,3 +77,19 @@ void MoveAction::OnProjectionAndTexture(GraphicsModActionData::Projection* proje auto& matrix = *projection->matrix; matrix = matrix * Common::Matrix44::Translate(m_position_offset); } + +void MoveAction::SerializeToConfig(picojson::object* obj) +{ + if (!obj) [[unlikely]] + return; + + auto& json_obj = *obj; + json_obj["X"] = picojson::value{static_cast(m_position_offset.x)}; + json_obj["Y"] = picojson::value{static_cast(m_position_offset.y)}; + json_obj["Z"] = picojson::value{static_cast(m_position_offset.z)}; +} + +std::string MoveAction::GetFactoryName() const +{ + return "move"; +} diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h index aee5e75f29..b6a3aa7a95 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h @@ -25,6 +25,9 @@ public: void OnProjection(GraphicsModActionData::Projection* projection) override; void OnProjectionAndTexture(GraphicsModActionData::Projection* projection) override; + void SerializeToConfig(picojson::object* obj) override; + std::string GetFactoryName() const override; + private: Common::Vec3 m_position_offset; }; diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.cpp index b693fef4f7..a9306b39fa 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.cpp @@ -24,3 +24,8 @@ void SkipAction::OnEFB(GraphicsModActionData::EFB* efb) *efb->skip = true; } + +std::string SkipAction::GetFactoryName() const +{ + return "skip"; +} diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.h index 8cda643c5a..c65a2a8124 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/Actions/SkipAction.h @@ -11,4 +11,5 @@ public: static constexpr std::string_view factory_name = "skip"; void OnDrawStarted(GraphicsModActionData::DrawStarted*) override; void OnEFB(GraphicsModActionData::EFB*) override; + std::string GetFactoryName() const override; }; diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h index 65f003a7a9..a4d3ed5a8c 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Runtime/GraphicsModAction.h @@ -3,6 +3,8 @@ #pragma once +#include + #include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModActionData.h" class GraphicsModAction @@ -25,4 +27,6 @@ public: virtual void OnFrameEnd() {} virtual void DrawImGui() {} + virtual void SerializeToConfig(picojson::object* obj) {} + virtual std::string GetFactoryName() const { return ""; } };