1616#include < OvDebug/Logger.h>
1717
1818#include < OvCore/Global/ServiceLocator.h>
19+ #include < OvCore/Helpers/GUIDrawer.h>
1920
2021#include < OvCore/ECS/Components/CCamera.h>
2122#include < OvCore/ECS/Components/CPointLight.h>
3132
3233#include < OvUI/Plugins/ContextualMenu.h>
3334
35+ #include " OvEditor/Core/EditorResources.h"
3436#include " OvEditor/Utils/ActorCreationMenu.h"
3537
3638class ActorContextualMenu : public OvUI ::Plugins::ContextualMenu
@@ -149,7 +151,13 @@ OvEditor::Panels::Hierarchy::Hierarchy
149151 m_actions(CreateWidget<OvUI::Widgets::Layout::Group>()),
150152 m_actors(CreateWidget<OvUI::Widgets::Layout::Group>())
151153{
152- auto & searchBar = m_actions.CreateWidget <OvUI::Widgets::InputFields::InputText>();
154+ const uint32_t searchIconID = []{
155+ if (auto * tex = EDITOR_CONTEXT (editorResources)->GetTexture (" Search" ))
156+ return tex->GetTexture ().GetID ();
157+ return 0u ;
158+ }();
159+
160+ auto & searchBar = OvCore::Helpers::GUIDrawer::DrawSearchBar (m_actions, searchIconID);
153161 searchBar.ContentChangedEvent += [this ](const std::string& p_content)
154162 {
155163 founds.clear ();
@@ -334,6 +342,10 @@ void OvEditor::Panels::Hierarchy::AddActorByInstance(OvCore::ECS::Actor & p_acto
334342{
335343 auto & textSelectable = m_actors.CreateWidget <OvUI::Widgets::Layout::TreeNode>(p_actor.GetName (), true );
336344 textSelectable.leaf = true ;
345+
346+ if (auto * actorTexture = EDITOR_CONTEXT (editorResources)->GetTexture (" Actor" ))
347+ textSelectable.iconTextureID = actorTexture->GetTexture ().GetID ();
348+
337349 textSelectable.AddPlugin <ActorContextualMenu>(&p_actor, &textSelectable);
338350 textSelectable.AddPlugin <OvUI::Plugins::DDSource<std::pair<OvCore::ECS::Actor*, OvUI::Widgets::Layout::TreeNode*>>>(" Actor" , " Attach to..." , std::make_pair (&p_actor, &textSelectable));
339351 textSelectable.AddPlugin <OvUI::Plugins::DDTarget<std::pair<OvCore::ECS::Actor*, OvUI::Widgets::Layout::TreeNode*>>>(" Actor" ).DataReceivedEvent += [&p_actor, &textSelectable](std::pair<OvCore::ECS::Actor*, OvUI::Widgets::Layout::TreeNode*> p_element)
@@ -349,7 +361,15 @@ void OvEditor::Panels::Hierarchy::AddActorByInstance(OvCore::ECS::Actor & p_acto
349361 auto & dispatcher = textSelectable.AddPlugin <OvUI::Plugins::DataDispatcher<std::string>>();
350362
351363 OvCore::ECS::Actor* targetPtr = &p_actor;
352- dispatcher.RegisterGatherer ([targetPtr] { return targetPtr->GetName (); });
364+ dispatcher.RegisterGatherer ([targetPtr, &textSelectable]
365+ {
366+ const bool isActive = targetPtr->IsSelfActive ();
367+ textSelectable.overrideLabelColor = !isActive;
368+ if (!isActive)
369+ textSelectable.labelColor = {0 .5f , 0 .5f , 0 .5f , 1 .0f };
370+
371+ return targetPtr->GetName ();
372+ });
353373
354374 m_widgetActorLink[targetPtr] = &textSelectable;
355375
0 commit comments