mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-21 17:59:50 +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/GraphicsModEditor/EditorEvents.h"
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
std::unique_ptr<ScaleAction> ScaleAction::Create(const picojson::value& json_data)
|
||||
{
|
||||
Common::Vec3 scale;
|
||||
|
@ -26,6 +30,11 @@ std::unique_ptr<ScaleAction> ScaleAction::Create(const picojson::value& json_dat
|
|||
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)
|
||||
{
|
||||
}
|
||||
|
@ -73,3 +82,35 @@ void ScaleAction::OnProjectionAndTexture(GraphicsModActionData::Projection* proj
|
|||
matrix.data[0] = matrix.data[0] * m_scale.x;
|
||||
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:
|
||||
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();
|
||||
|
||||
explicit ScaleAction(Common::Vec3 scale);
|
||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||
void OnProjection(GraphicsModActionData::Projection*) override;
|
||||
void OnProjectionAndTexture(GraphicsModActionData::Projection*) override;
|
||||
|
||||
void DrawImGui() override;
|
||||
|
||||
void SerializeToConfig(picojson::object* obj) override;
|
||||
std::string GetFactoryName() const override;
|
||||
|
||||
private:
|
||||
Common::Vec3 m_scale;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue