mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-23 18:59:19 +00:00
VideoCommon: update the scale action to support the graphics mod editor
This commit is contained in:
parent
7b659c3984
commit
d9b00c802e
2 changed files with 48 additions and 0 deletions
|
@ -3,6 +3,10 @@
|
||||||
|
|
||||||
#include "VideoCommon/GraphicsModSystem/Runtime/Actions/ScaleAction.h"
|
#include "VideoCommon/GraphicsModSystem/Runtime/Actions/ScaleAction.h"
|
||||||
|
|
||||||
|
#include "VideoCommon/GraphicsModEditor/EditorEvents.h"
|
||||||
|
|
||||||
|
#include <imgui.h>
|
||||||
|
|
||||||
std::unique_ptr<ScaleAction> ScaleAction::Create(const picojson::value& json_data)
|
std::unique_ptr<ScaleAction> ScaleAction::Create(const picojson::value& json_data)
|
||||||
{
|
{
|
||||||
Common::Vec3 scale;
|
Common::Vec3 scale;
|
||||||
|
@ -26,6 +30,11 @@ std::unique_ptr<ScaleAction> ScaleAction::Create(const picojson::value& json_dat
|
||||||
return std::make_unique<ScaleAction>(scale);
|
return std::make_unique<ScaleAction>(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<ScaleAction> ScaleAction::Create()
|
||||||
|
{
|
||||||
|
return std::make_unique<ScaleAction>(Common::Vec3{});
|
||||||
|
}
|
||||||
|
|
||||||
ScaleAction::ScaleAction(Common::Vec3 scale) : m_scale(scale)
|
ScaleAction::ScaleAction(Common::Vec3 scale) : m_scale(scale)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -73,3 +82,35 @@ void ScaleAction::OnProjectionAndTexture(GraphicsModActionData::Projection* proj
|
||||||
matrix.data[0] = matrix.data[0] * m_scale.x;
|
matrix.data[0] = matrix.data[0] * m_scale.x;
|
||||||
matrix.data[5] = matrix.data[5] * m_scale.y;
|
matrix.data[5] = matrix.data[5] * m_scale.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScaleAction::DrawImGui()
|
||||||
|
{
|
||||||
|
if (ImGui::InputFloat("X", &m_scale.x))
|
||||||
|
{
|
||||||
|
GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger();
|
||||||
|
}
|
||||||
|
if (ImGui::InputFloat("Y", &m_scale.y))
|
||||||
|
{
|
||||||
|
GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger();
|
||||||
|
}
|
||||||
|
if (ImGui::InputFloat("Z", &m_scale.z))
|
||||||
|
{
|
||||||
|
GraphicsModEditor::EditorEvents::ChangeOccurredEvent::Trigger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScaleAction::SerializeToConfig(picojson::object* obj)
|
||||||
|
{
|
||||||
|
if (!obj) [[unlikely]]
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto& json_obj = *obj;
|
||||||
|
json_obj["X"] = picojson::value{static_cast<double>(m_scale.x)};
|
||||||
|
json_obj["Y"] = picojson::value{static_cast<double>(m_scale.y)};
|
||||||
|
json_obj["Z"] = picojson::value{static_cast<double>(m_scale.z)};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string ScaleAction::GetFactoryName() const
|
||||||
|
{
|
||||||
|
return "scale";
|
||||||
|
}
|
||||||
|
|
|
@ -15,11 +15,18 @@ class ScaleAction final : public GraphicsModAction
|
||||||
public:
|
public:
|
||||||
static constexpr std::string_view factory_name = "scale";
|
static constexpr std::string_view factory_name = "scale";
|
||||||
static std::unique_ptr<ScaleAction> Create(const picojson::value& json_data);
|
static std::unique_ptr<ScaleAction> Create(const picojson::value& json_data);
|
||||||
|
static std::unique_ptr<ScaleAction> Create();
|
||||||
|
|
||||||
explicit ScaleAction(Common::Vec3 scale);
|
explicit ScaleAction(Common::Vec3 scale);
|
||||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||||
void OnProjection(GraphicsModActionData::Projection*) override;
|
void OnProjection(GraphicsModActionData::Projection*) override;
|
||||||
void OnProjectionAndTexture(GraphicsModActionData::Projection*) override;
|
void OnProjectionAndTexture(GraphicsModActionData::Projection*) override;
|
||||||
|
|
||||||
|
void DrawImGui() override;
|
||||||
|
|
||||||
|
void SerializeToConfig(picojson::object* obj) override;
|
||||||
|
std::string GetFactoryName() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Common::Vec3 m_scale;
|
Common::Vec3 m_scale;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue