mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-23 10:50:01 +00:00
VideoCommon: add support for serializing graphics mod actions to json, expose function to describe action name
This commit is contained in:
parent
8657d94e33
commit
00cbdd2adf
5 changed files with 42 additions and 3 deletions
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -24,3 +24,8 @@ void SkipAction::OnEFB(GraphicsModActionData::EFB* efb)
|
|||
|
||||
*efb->skip = true;
|
||||
}
|
||||
|
||||
std::string SkipAction::GetFactoryName() const
|
||||
{
|
||||
return "skip";
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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 ""; }
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue