VideoCommon: add support for serializing graphics mod actions to json, expose function to describe action name

This commit is contained in:
iwubcode 2023-11-03 23:33:14 -05:00
commit 00cbdd2adf
5 changed files with 42 additions and 3 deletions

View file

@ -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 <imgui.h>
@ -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<double>(m_position_offset.x)};
json_obj["Y"] = picojson::value{static_cast<double>(m_position_offset.y)};
json_obj["Z"] = picojson::value{static_cast<double>(m_position_offset.z)};
}
std::string MoveAction::GetFactoryName() const
{
return "move";
}

View file

@ -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;
};

View file

@ -24,3 +24,8 @@ void SkipAction::OnEFB(GraphicsModActionData::EFB* efb)
*efb->skip = true;
}
std::string SkipAction::GetFactoryName() const
{
return "skip";
}

View file

@ -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;
};

View file

@ -3,6 +3,8 @@
#pragma once
#include <picojson.h>
#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 ""; }
};