mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-25 11:46:27 +00:00
VideoCommon: add graphics mod editor helper utilities for interacting with objects in the scene
This commit is contained in:
parent
67dc74a25c
commit
a727f8908c
2 changed files with 71 additions and 0 deletions
35
Source/Core/VideoCommon/GraphicsModEditor/SceneUtils.cpp
Normal file
35
Source/Core/VideoCommon/GraphicsModEditor/SceneUtils.cpp
Normal file
|
@ -0,0 +1,35 @@
|
|||
// Copyright 2025 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "VideoCommon/GraphicsModEditor/SceneUtils.h"
|
||||
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include "Common/EnumUtils.h"
|
||||
|
||||
namespace GraphicsModEditor
|
||||
{
|
||||
std::string GetDrawCallName(const EditorState& editor_state,
|
||||
GraphicsModSystem::DrawCallID draw_call)
|
||||
{
|
||||
if (draw_call == GraphicsModSystem::DrawCallID::INVALID)
|
||||
return "";
|
||||
|
||||
std::string draw_call_name = std::to_string(Common::ToUnderlying(draw_call));
|
||||
auto& draw_call_to_user_data = editor_state.m_user_data.m_draw_call_id_to_user_data;
|
||||
if (const auto user_data_iter = draw_call_to_user_data.find(draw_call);
|
||||
user_data_iter != draw_call_to_user_data.end())
|
||||
{
|
||||
if (!user_data_iter->second.m_friendly_name.empty())
|
||||
draw_call_name = user_data_iter->second.m_friendly_name;
|
||||
}
|
||||
return draw_call_name;
|
||||
}
|
||||
|
||||
std::string GetActionName(GraphicsModAction* action)
|
||||
{
|
||||
if (!action) [[unlikely]]
|
||||
return "";
|
||||
return fmt::format("{}-{}", action->GetFactoryName(), action->GetID());
|
||||
}
|
||||
} // namespace GraphicsModEditor
|
36
Source/Core/VideoCommon/GraphicsModEditor/SceneUtils.h
Normal file
36
Source/Core/VideoCommon/GraphicsModEditor/SceneUtils.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
// Copyright 2025 Dolphin Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <concepts>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "VideoCommon/GraphicsModEditor/EditorState.h"
|
||||
#include "VideoCommon/GraphicsModSystem/Types.h"
|
||||
|
||||
namespace GraphicsModEditor
|
||||
{
|
||||
std::string GetDrawCallName(const EditorState& editor_state,
|
||||
GraphicsModSystem::DrawCallID draw_call);
|
||||
std::string GetActionName(GraphicsModAction* action);
|
||||
|
||||
template <std::derived_from<GraphicsModAction> ActionType>
|
||||
std::vector<ActionType*> GetActionsForDrawCall(const EditorState& editor_state,
|
||||
GraphicsModSystem::DrawCallID draw_call)
|
||||
{
|
||||
std::vector<ActionType*> result;
|
||||
auto& draw_call_id_to_actions = editor_state.m_user_data.m_draw_call_id_to_actions;
|
||||
if (const auto actions_iter = draw_call_id_to_actions.find(draw_call);
|
||||
actions_iter != draw_call_id_to_actions.end())
|
||||
{
|
||||
for (GraphicsModAction* action : actions_iter->second)
|
||||
{
|
||||
if (action->GetFactoryName() == ActionType::factory_name)
|
||||
result.push_back(static_cast<ActionType*>(action));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
} // namespace GraphicsModEditor
|
Loading…
Add table
Add a link
Reference in a new issue