mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-24 19:27:27 +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
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h"
|
#include "VideoCommon/GraphicsModSystem/Runtime/Actions/MoveAction.h"
|
||||||
|
#include "VideoCommon/GraphicsModEditor/EditorEvents.h"
|
||||||
|
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
|
|
||||||
|
@ -39,9 +40,18 @@ MoveAction::MoveAction(Common::Vec3 position_offset) : m_position_offset(positio
|
||||||
|
|
||||||
void MoveAction::DrawImGui()
|
void MoveAction::DrawImGui()
|
||||||
{
|
{
|
||||||
ImGui::InputFloat("X", &m_position_offset.x);
|
if (ImGui::InputFloat("X", &m_position_offset.x))
|
||||||
ImGui::InputFloat("Y", &m_position_offset.y);
|
{
|
||||||
ImGui::InputFloat("Z", &m_position_offset.z);
|
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)
|
void MoveAction::OnProjection(GraphicsModActionData::Projection* projection)
|
||||||
|
@ -67,3 +77,19 @@ void MoveAction::OnProjectionAndTexture(GraphicsModActionData::Projection* proje
|
||||||
auto& matrix = *projection->matrix;
|
auto& matrix = *projection->matrix;
|
||||||
matrix = matrix * Common::Matrix44::Translate(m_position_offset);
|
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 OnProjection(GraphicsModActionData::Projection* projection) override;
|
||||||
void OnProjectionAndTexture(GraphicsModActionData::Projection* projection) override;
|
void OnProjectionAndTexture(GraphicsModActionData::Projection* projection) override;
|
||||||
|
|
||||||
|
void SerializeToConfig(picojson::object* obj) override;
|
||||||
|
std::string GetFactoryName() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Common::Vec3 m_position_offset;
|
Common::Vec3 m_position_offset;
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,3 +24,8 @@ void SkipAction::OnEFB(GraphicsModActionData::EFB* efb)
|
||||||
|
|
||||||
*efb->skip = true;
|
*efb->skip = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string SkipAction::GetFactoryName() const
|
||||||
|
{
|
||||||
|
return "skip";
|
||||||
|
}
|
||||||
|
|
|
@ -11,4 +11,5 @@ public:
|
||||||
static constexpr std::string_view factory_name = "skip";
|
static constexpr std::string_view factory_name = "skip";
|
||||||
void OnDrawStarted(GraphicsModActionData::DrawStarted*) override;
|
void OnDrawStarted(GraphicsModActionData::DrawStarted*) override;
|
||||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||||
|
std::string GetFactoryName() const override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <picojson.h>
|
||||||
|
|
||||||
#include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModActionData.h"
|
#include "VideoCommon/GraphicsModSystem/Runtime/GraphicsModActionData.h"
|
||||||
|
|
||||||
class GraphicsModAction
|
class GraphicsModAction
|
||||||
|
@ -25,4 +27,6 @@ public:
|
||||||
virtual void OnFrameEnd() {}
|
virtual void OnFrameEnd() {}
|
||||||
|
|
||||||
virtual void DrawImGui() {}
|
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