Added open by default for component inspector toggle headers, Added drag/drop receiving for all uint32_t fields #315
|
@ -0,0 +1,13 @@
|
|||
#pragma once
|
||||
#include "Camera/SHCameraComponent.h"
|
||||
#include "Camera/SHCameraArmComponent.h"
|
||||
#include "Math/Transform/SHTransformComponent.h"
|
||||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
#include "Physics/Interface/SHRigidBodyComponent.h"
|
||||
#include "UI/SHCanvasComponent.h"
|
||||
#include "UI/SHButtonComponent.h"
|
||||
#include "UI/SHUIComponent.h"
|
||||
#include "Graphics/MiddleEnd/Lights/SHLightComponent.h"
|
||||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
#include "Physics/Interface/SHColliderComponent.h"
|
||||
#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h"
|
|
@ -239,10 +239,7 @@ namespace SHADE
|
|||
case AssetType::TEXTURE: break;
|
||||
case AssetType::MESH: break;
|
||||
case AssetType::SCENE:
|
||||
if(auto editor = SHSystemManager::GetSystem<SHEditor>())
|
||||
{
|
||||
editor->LoadScene(asset->id);
|
||||
}
|
||||
break;
|
||||
case AssetType::PREFAB: break;
|
||||
case AssetType::MATERIAL:
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
//#==============================================================#
|
||||
#include "SHpch.h"
|
||||
|
||||
//#==============================================================#
|
||||
//|| Library Includes ||
|
||||
//#==============================================================#
|
||||
#include <imgui.h>
|
||||
|
||||
//#==============================================================#
|
||||
//|| SHADE Includes ||
|
||||
//#==============================================================#
|
||||
|
@ -16,14 +21,11 @@
|
|||
#include "Tools/SHException.h"
|
||||
#include "Editor/IconsMaterialDesign.h"
|
||||
#include "SHHierarchyPanelCommands.h"
|
||||
|
||||
//#==============================================================#
|
||||
//|| Library Includes ||
|
||||
//#==============================================================#
|
||||
#include <imgui.h>
|
||||
#include "Common/SHAllComponents.h"
|
||||
|
||||
#include "Serialization/SHSerialization.h"
|
||||
#include "Tools/Utilities/SHClipboardUtilities.h"
|
||||
#include "Tools/Utilities/SHStringUtilities.h"
|
||||
|
||||
|
||||
namespace SHADE
|
||||
|
@ -80,7 +82,6 @@ namespace SHADE
|
|||
|
||||
if (ImGui::IsWindowHovered() && !SHDragDrop::hasDragDrop && !ImGui::IsAnyItemHovered() && ImGui::IsMouseReleased(ImGuiMouseButton_Left))
|
||||
{
|
||||
if (auto editor = SHSystemManager::GetSystem<SHEditor>())
|
||||
editor->selectedEntities.clear();
|
||||
}
|
||||
ImGui::SeparatorEx(ImGuiSeparatorFlags_Horizontal);
|
||||
|
@ -99,7 +100,6 @@ namespace SHADE
|
|||
}
|
||||
if (ImGui::IsKeyDown(ImGuiKey_LeftCtrl) && ImGui::IsKeyDown(ImGuiKey_LeftShift) && ImGui::IsKeyReleased(ImGuiKey_V))
|
||||
{
|
||||
const auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
if (editor->selectedEntities.size() == 1)
|
||||
{
|
||||
PasteEntities(editor->selectedEntities.back());
|
||||
|
@ -141,16 +141,18 @@ namespace SHADE
|
|||
//#==============================================================#
|
||||
//|| Private Member Functions ||
|
||||
//#==============================================================#
|
||||
void SHHierarchyPanel::DrawMenuBar() const noexcept
|
||||
void SHHierarchyPanel::DrawMenuBar() noexcept
|
||||
{
|
||||
if (ImGui::BeginMenuBar())
|
||||
{
|
||||
auto size = ImGui::GetWindowSize();
|
||||
auto g = ImGui::GetCurrentContext();
|
||||
|
||||
DrawHierarchyPanelFilter();
|
||||
|
||||
ImGui::SetCursorPosX(size.x - g->Style.FramePadding.x * 15.0f);
|
||||
if (ImGui::SmallButton(ICON_MD_CLEAR_ALL))
|
||||
{
|
||||
auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
editor->selectedEntities.clear();
|
||||
}
|
||||
if (ImGui::IsItemHovered())
|
||||
|
@ -173,6 +175,56 @@ namespace SHADE
|
|||
}
|
||||
}
|
||||
|
||||
void SHHierarchyPanel::DrawHierarchyPanelFilter() noexcept
|
||||
{
|
||||
if(ImGui::InputTextWithHint("##hierarchyPanelFilter", "Filter", &filter))
|
||||
{
|
||||
|
||||
}
|
||||
ImGui::SameLine();
|
||||
if(ImGui::Button("x"))
|
||||
{
|
||||
filter.clear();
|
||||
}
|
||||
}
|
||||
|
||||
bool SHHierarchyPanel::EntityFilterCheck(SHSceneNode* entityNode) noexcept
|
||||
{
|
||||
if(!entityNode || filter.empty())
|
||||
return false;
|
||||
|
||||
EntityID const eid = entityNode->GetEntityID();
|
||||
SHEntity* entity = SHEntityManager::GetEntityByID(eid);
|
||||
|
||||
bool result = false;
|
||||
|
||||
result |= SHStringUtilities::StringFindInsensitive(entity->name, filter) != std::string::npos;
|
||||
|
||||
if(SHStringUtilities::StringFindInsensitive(rttr::type::get<SHTransformComponent>().get_name().data(), filter) != std::string::npos)
|
||||
{
|
||||
result |= SHComponentManager::HasComponent<SHTransformComponent>(eid);
|
||||
}
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHColliderComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHRigidBodyComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHCameraComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHCameraArmComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHRenderable>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHLightComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHTextRenderableComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHUIComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHButtonComponent>().get_name().data(), filter) != std::string::npos;
|
||||
//result |= SHStringUtilities::StringFindInsensitive(rttr::type::get<SHCanvasComponent>().get_name().data(), filter) != std::string::npos;
|
||||
|
||||
//std::vector<SHSceneNode*> const& children = entityNode->GetChildren();
|
||||
|
||||
//for (auto const& child : children)
|
||||
//{
|
||||
// result |= EntityFilterCheck(child);
|
||||
//}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
ImRect SHHierarchyPanel::RecursivelyDrawEntityNode(SHSceneNode* const currentNode)
|
||||
{
|
||||
if (currentNode == nullptr)
|
||||
|
@ -189,21 +241,39 @@ namespace SHADE
|
|||
scrollTo = MAX_EID;
|
||||
}
|
||||
|
||||
auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
auto* entity = SHEntityManager::GetEntityByID(eid);
|
||||
|
||||
const bool isSelected = (std::ranges::find(editor->selectedEntities, eid) != editor->selectedEntities.end());
|
||||
|
||||
const ImGuiTreeNodeFlags nodeFlags = ((isSelected) ? ImGuiTreeNodeFlags_Selected : 0) | ((children.empty()) ? ImGuiTreeNodeFlags_Leaf : ImGuiTreeNodeFlags_OpenOnArrow);
|
||||
|
||||
//bool highlighted = false;
|
||||
//if(highlighted)
|
||||
bool highlighted = false;
|
||||
//if(!filter.empty())
|
||||
//{
|
||||
// ImGui::PushStyleColor(ImGuiCol_Text, highlightedColor);
|
||||
// highlighted = EntityFilterCheck(currentNode);
|
||||
// if (highlighted)
|
||||
// {
|
||||
// ImGui::PushStyleColor(ImGuiCol_Text, highlightedColor);
|
||||
//
|
||||
// ImGui::SetNextItemOpen(true);
|
||||
//
|
||||
//
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
||||
auto* entity = SHEntityManager::GetEntityByID(currentNode->GetEntityID());
|
||||
const ImGuiTreeNodeFlags nodeFlags = ((isSelected) ? ImGuiTreeNodeFlags_Selected : 0) | ((children.empty()) ? ImGuiTreeNodeFlags_Leaf : ImGuiTreeNodeFlags_OpenOnArrow);
|
||||
|
||||
|
||||
//Draw Node
|
||||
bool isNodeOpen = ImGui::TreeNodeEx(reinterpret_cast<void*>(entity), nodeFlags, "%u: %s", SHEntityManager::GetEntityIndex(eid), entity->name.c_str());
|
||||
bool isNodeOpen = ImGui::TreeNodeEx(reinterpret_cast<void*>(eid), nodeFlags, "%u: %s", SHEntityManager::GetEntityIndex(eid), entity->name.c_str());
|
||||
|
||||
if (highlighted)
|
||||
{
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
|
||||
const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax());
|
||||
|
||||
//Check For Begin Drag
|
||||
|
@ -336,6 +406,7 @@ namespace SHADE
|
|||
drawList->AddLine(vertLineStart, vertLineEnd, treeLineColor, 2);
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
||||
return nodeRect;
|
||||
}
|
||||
|
||||
|
@ -350,7 +421,6 @@ namespace SHADE
|
|||
|
||||
std::vector<EntityID> entitiesToParent = CleanUpEIDList(entities);
|
||||
|
||||
//auto const editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
SHEntityParentCommand::EntityParentData entityParentData;
|
||||
std::vector<EntityID> parentedEIDS;
|
||||
for (auto const& eid : entitiesToParent)
|
||||
|
@ -371,7 +441,7 @@ namespace SHADE
|
|||
void SHHierarchyPanel::SelectRangeOfEntities(EntityID beginEID, EntityID endEID)
|
||||
{
|
||||
bool startSelecting = false; bool endSelecting = false;
|
||||
auto const editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
|
||||
editor->selectedEntities.clear();
|
||||
auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph();
|
||||
sceneGraph.Traverse([&](SHSceneNode* nodePtr)
|
||||
|
@ -403,7 +473,6 @@ namespace SHADE
|
|||
|
||||
void SHHierarchyPanel::SelectAllEntities()
|
||||
{
|
||||
const auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
editor->selectedEntities.clear();
|
||||
auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph();
|
||||
sceneGraph.Traverse([&](SHSceneNode* nodePtr)
|
||||
|
@ -415,7 +484,6 @@ namespace SHADE
|
|||
|
||||
void SHHierarchyPanel::CopySelectedEntities()
|
||||
{
|
||||
const auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
std::vector<EntityID> entitiesToCopy = CleanUpEIDList(editor->selectedEntities);
|
||||
SHClipboardUtilities::WriteToClipboard(SHSerialization::SerializeEntitiesToString(entitiesToCopy));
|
||||
}
|
||||
|
@ -428,7 +496,6 @@ namespace SHADE
|
|||
|
||||
void SHHierarchyPanel::DeleteSelectedEntities()
|
||||
{
|
||||
const auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
std::vector<EntityID> entitiesToDelete = CleanUpEIDList(editor->selectedEntities);
|
||||
SHCommandManager::PerformCommand(std::make_shared<SHDeleteEntitiesCommand>(entitiesToDelete));
|
||||
}
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
#include "imgui_internal.h"
|
||||
#include "ECS_Base/SHECSMacros.h"
|
||||
#include "Editor/EditorWindow/SHEditorWindow.h"
|
||||
#include "ECS_Base/Entity/SHEntity.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
class SHSceneNode;
|
||||
|
@ -24,7 +26,11 @@ namespace SHADE
|
|||
void Exit() override;
|
||||
void SetScrollTo(EntityID eid);
|
||||
private:
|
||||
void DrawMenuBar() const noexcept;
|
||||
void DrawMenuBar() noexcept;
|
||||
void DrawHierarchyPanelFilter() noexcept;
|
||||
|
||||
bool EntityFilterCheck(SHSceneNode* entityNode) noexcept;
|
||||
|
||||
ImRect RecursivelyDrawEntityNode(SHSceneNode* const);
|
||||
void CreateChildEntity(EntityID parentEID) const noexcept;
|
||||
void ParentSelectedEntities(EntityID parentEID, std::vector<EntityID> const& entities) noexcept;
|
||||
|
|
|
@ -93,7 +93,6 @@ namespace SHADE
|
|||
SHEditorWindow::Update();
|
||||
if (Begin())
|
||||
{
|
||||
auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
if (editor && !editor->selectedEntities.empty())
|
||||
{
|
||||
EntityID const& eid = editor->selectedEntities[0];
|
||||
|
|
|
@ -110,7 +110,7 @@ namespace SHADE
|
|||
{
|
||||
ImGui::BeginMenuBar();
|
||||
ImGui::SetCursorPosX(ImGui::GetContentRegionAvail().x * 0.5f - 80.f);
|
||||
const auto editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
|
||||
ImGui::BeginDisabled(editor->editorState == SHEditor::State::PLAY);
|
||||
if(ImGui::SmallButton(ICON_MD_PLAY_ARROW))
|
||||
{
|
||||
|
@ -165,16 +165,18 @@ namespace SHADE
|
|||
{
|
||||
if (ImGui::Selectable("New Scene"))
|
||||
{
|
||||
SHSystemManager::GetSystem<SHEditor>()->NewScene();
|
||||
editor->NewScene();
|
||||
}
|
||||
if (ImGui::Selectable("Save"))
|
||||
{
|
||||
SHSystemManager::GetSystem<SHEditor>()->SaveScene();
|
||||
editor->SaveScene();
|
||||
}
|
||||
ImGui::BeginDisabled(true);
|
||||
if (ImGui::Selectable("Load"))
|
||||
{
|
||||
//SHSystemManager::GetSystem<SHEditor>()->LoadScene()
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
}
|
||||
|
@ -211,7 +213,7 @@ namespace SHADE
|
|||
auto* scriptEngine = static_cast<SHScriptEngine*>(SHSystemManager::GetSystem<SHScriptEngine>());
|
||||
scriptEngine->OpenSolution();
|
||||
}
|
||||
ImGui::BeginDisabled(SHSystemManager::GetSystem<SHEditor>()->editorState != SHEditor::State::STOP);
|
||||
ImGui::BeginDisabled(editor->editorState != SHEditor::State::STOP);
|
||||
if (ImGui::Selectable("Build Scripts - Debug"))
|
||||
{
|
||||
auto* scriptEngine = static_cast<SHScriptEngine*>(SHSystemManager::GetSystem<SHScriptEngine>());
|
||||
|
@ -252,7 +254,6 @@ namespace SHADE
|
|||
{
|
||||
if (ImGui::Selectable(style.to_string().c_str()))
|
||||
{
|
||||
if (auto editor = SHSystemManager::GetSystem<SHEditor>())
|
||||
editor->SetStyle(style.convert<SHEditor::Style>());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
//|| SHADE Includes ||
|
||||
//#==============================================================#
|
||||
#include "SHEditorWindow.h"
|
||||
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||
#include "Editor/SHEditor.h"
|
||||
|
||||
//#==============================================================#
|
||||
//|| Library Includes ||
|
||||
|
@ -21,6 +23,7 @@ namespace SHADE
|
|||
SHEditorWindow::SHEditorWindow(std::string_view const& name, ImGuiWindowFlags const& inFlags)
|
||||
:isOpen(true), isWindowHovered(false), windowName(name), windowFlags(inFlags), io(ImGui::GetIO())
|
||||
{
|
||||
editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
}
|
||||
|
||||
void SHEditorWindow::Init()
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
//#==============================================================#
|
||||
struct ImGuiIO;
|
||||
typedef int ImGuiWindowFlags;
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
class SHEditor;
|
||||
class SHEditorWindow
|
||||
{
|
||||
public:
|
||||
|
@ -38,6 +38,6 @@ namespace SHADE
|
|||
|
||||
ImGuiWindowFlags windowFlags = 0;
|
||||
ImGuiIO& io;
|
||||
|
||||
SHEditor* editor;
|
||||
};//class SHEditorWindow
|
||||
}//namespace SHADE
|
||||
|
|
|
@ -35,7 +35,6 @@ namespace SHADE
|
|||
{
|
||||
SHEditorWindow::Update();
|
||||
auto camSystem = SHSystemManager::GetSystem<SHCameraSystem>();
|
||||
SHEditor* editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
|
||||
if (!editor->selectedEntities.empty())
|
||||
{
|
||||
|
|
|
@ -11,15 +11,8 @@
|
|||
#include <fstream>
|
||||
|
||||
#include "Assets/Asset Types/SHSceneAsset.h"
|
||||
#include "Camera/SHCameraComponent.h"
|
||||
#include "Camera/SHCameraArmComponent.h"
|
||||
#include "Math/Transform/SHTransformComponent.h"
|
||||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
#include "Physics/Interface/SHRigidBodyComponent.h"
|
||||
#include "UI/SHCanvasComponent.h"
|
||||
#include "UI/SHButtonComponent.h"
|
||||
#include "Common/SHAllComponents.h"
|
||||
#include "ECS_Base/Managers/SHSystemManager.h"
|
||||
#include "Graphics/MiddleEnd/Lights/SHLightComponent.h"
|
||||
#include "Scripting/SHScriptEngine.h"
|
||||
#include "Tools/FileIO/SHFileIO.h"
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#pragma once
|
||||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
#include "Physics/Interface/SHColliderComponent.h"
|
||||
#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h"
|
||||
#include "Graphics/MiddleEnd/Materials/SHMaterialSpec.h"
|
||||
#include "Math/Geometry/SHBox.h"
|
||||
#include "Math/Geometry/SHSphere.h"
|
||||
|
@ -11,8 +13,6 @@
|
|||
#include "Graphics/MiddleEnd/Interface/SHMaterial.h"
|
||||
#include "Graphics/MiddleEnd/Interface/SHMaterialInstance.h"
|
||||
#include "SHSerializationTools.h"
|
||||
#include "Physics/Interface/SHColliderComponent.h"
|
||||
#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h"
|
||||
#include "Graphics/MiddleEnd/TextRendering/SHFont.h"
|
||||
#include "Physics/Collision/SHCollisionTagMatrix.h"
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ of DigiPen Institute of Technology is prohibited.
|
|||
#include <SHpch.h>
|
||||
// Primary Header
|
||||
#include "SHStringUtilities.h"
|
||||
#include <algorithm>
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
@ -50,5 +51,12 @@ namespace SHADE
|
|||
{
|
||||
return std::system_category().message(errorCode);
|
||||
}
|
||||
|
||||
size_t SHStringUtilities::StringFindInsensitive(std::string str, std::string search, size_t pos)
|
||||
{
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](char c) {return static_cast<char>(std::tolower(c)); });
|
||||
std::transform(search.begin(), search.end(), search.begin(), [](char c) {return static_cast<char>(std::tolower(c)); });
|
||||
return str.find(search, pos);
|
||||
}
|
||||
|
||||
}
|
|
@ -4,9 +4,9 @@
|
|||
\par email: kahwei.tng\@digipen.edu
|
||||
\date Nov 29, 2021
|
||||
\brief Contains the declaration of functions for working with files and folders.
|
||||
|
||||
|
||||
Copyright (C) 2021 DigiPen Institute of Technology.
|
||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
||||
Reproduction or disclosure of this file or its contents without the prior written consent
|
||||
of DigiPen Institute of Technology is prohibited.
|
||||
*//*************************************************************************************/
|
||||
#pragma once
|
||||
|
@ -16,66 +16,68 @@ of DigiPen Institute of Technology is prohibited.
|
|||
|
||||
namespace SHADE
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains useful functions for operating on strings.
|
||||
/// </summary>
|
||||
class SHStringUtilities
|
||||
{
|
||||
public:
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
/* Utility Functions */
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Internal type of each element in the string.</typeparam>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
template<typename T>
|
||||
static std::vector<std::basic_string<T>> Split(const std::basic_string<T>& str, const T& delim);
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// Overload of Split<T>() to allow for string literals to be accepted.
|
||||
/// </summary>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
static std::vector<std::string> Split(const std::string& str, const char& delim);
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// Overload of Split<T>() to allow for wide string literals to be accepted.
|
||||
/// </summary>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
static std::vector<std::wstring> Split(const std::wstring& str, const wchar_t& delim);
|
||||
/// <summary>
|
||||
/// Converts a wstring to a string.
|
||||
/// </summary>
|
||||
/// <param name="wstr">wstring to convert.</param>
|
||||
/// <returns>The converted wstring in string form.</returns>
|
||||
static std::string WstrToStr(const std::wstring& wstr);
|
||||
/// <summary>
|
||||
/// Converts a string to a wstring.
|
||||
/// </summary>
|
||||
/// <param name="str">string to convert.</param>
|
||||
/// <returns>The converted string in wstring form.</returns>
|
||||
static std::wstring StrToWstr(const std::string& str);
|
||||
/// <summary>
|
||||
/// Retrieves the error message associated with a Win32 error code.
|
||||
/// </summary>
|
||||
/// <param name="errorCode">Win32 error code to decode.</param>
|
||||
/// <returns>String that represents the Win32 error.</returns>
|
||||
static std::string GetWin32ErrorMessage(unsigned long errorCode);
|
||||
/// <summary>
|
||||
/// Contains useful functions for operating on strings.
|
||||
/// </summary>
|
||||
class SHStringUtilities
|
||||
{
|
||||
public:
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
/* Utility Functions */
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
|
||||
private:
|
||||
/*-------------------------------------------------------------------------------*/
|
||||
/* Constructors/Destructors */
|
||||
/*-------------------------------------------------------------------------------*/
|
||||
SHStringUtilities() = delete;
|
||||
};
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Internal type of each element in the string.</typeparam>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
template<typename T>
|
||||
static std::vector<std::basic_string<T>> Split(const std::basic_string<T>& str, const T& delim);
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// Overload of Split<T>() to allow for string literals to be accepted.
|
||||
/// </summary>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
static std::vector<std::string> Split(const std::string& str, const char& delim);
|
||||
/// <summary>
|
||||
/// Splits a string separated by a specified delimiter into a vector of strings.
|
||||
/// Overload of Split<T>() to allow for wide string literals to be accepted.
|
||||
/// </summary>
|
||||
/// <param name="str">Read only reference to the string to split.</param>
|
||||
/// <param name="delim">Read only reference to the delimiter.</param>
|
||||
/// <returns>Vector of strings that have been split.</returns>
|
||||
static std::vector<std::wstring> Split(const std::wstring& str, const wchar_t& delim);
|
||||
/// <summary>
|
||||
/// Converts a wstring to a string.
|
||||
/// </summary>
|
||||
/// <param name="wstr">wstring to convert.</param>
|
||||
/// <returns>The converted wstring in string form.</returns>
|
||||
static std::string WstrToStr(const std::wstring& wstr);
|
||||
/// <summary>
|
||||
/// Converts a string to a wstring.
|
||||
/// </summary>
|
||||
/// <param name="str">string to convert.</param>
|
||||
/// <returns>The converted string in wstring form.</returns>
|
||||
static std::wstring StrToWstr(const std::string& str);
|
||||
/// <summary>
|
||||
/// Retrieves the error message associated with a Win32 error code.
|
||||
/// </summary>
|
||||
/// <param name="errorCode">Win32 error code to decode.</param>
|
||||
/// <returns>String that represents the Win32 error.</returns>
|
||||
static std::string GetWin32ErrorMessage(unsigned long errorCode);
|
||||
|
||||
static size_t StringFindInsensitive(std::string str, std::string search, size_t pos = 0);
|
||||
|
||||
private:
|
||||
/*-------------------------------------------------------------------------------*/
|
||||
/* Constructors/Destructors */
|
||||
/*-------------------------------------------------------------------------------*/
|
||||
SHStringUtilities() = delete;
|
||||
};
|
||||
}
|
||||
|
||||
#include "SHStringUtilities.hpp"
|
||||
|
|
Loading…
Reference in New Issue