Editor fixes - Parenting of range selected entities, Component IsActive Checkbox, Scene Play/Pause behaviour, Gizmo controls #209
|
@ -345,10 +345,18 @@ namespace SHADE
|
|||
void SHHierarchyPanel::ParentSelectedEntities(EntityID parentEID, std::vector<EntityID> const& entities) const noexcept
|
||||
{
|
||||
auto const& sceneGraph = SHSceneManager::GetCurrentSceneGraph();
|
||||
|
||||
std::vector<EntityID> entitiesToParent{};
|
||||
std::ranges::copy_if(entities, std::back_inserter(entitiesToParent), [&sceneGraph](EntityID const& eid)
|
||||
{
|
||||
if (sceneGraph.GetParent(eid)->GetEntityID() == MAX_EID)
|
||||
return true;
|
||||
return false;
|
||||
});
|
||||
//auto const editor = SHSystemManager::GetSystem<SHEditor>();
|
||||
SHEntityParentCommand::EntityParentData entityParentData;
|
||||
std::vector<EntityID> parentedEIDS;
|
||||
for (auto const& eid : entities)
|
||||
for (auto const& eid : entitiesToParent)
|
||||
{
|
||||
if(eid == parentEID)
|
||||
continue;
|
||||
|
|
|
@ -68,10 +68,10 @@ namespace SHADE
|
|||
{
|
||||
if (!component)
|
||||
return;
|
||||
|
||||
const auto componentType = rttr::type::get<T>();
|
||||
ImGui::PushID(SHFamilyID<SHComponent>::GetID<T>());
|
||||
SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active");
|
||||
ImGui::PopID();
|
||||
ImGui::SameLine();
|
||||
if (ImGui::CollapsingHeader(componentType.get_name().data()))
|
||||
{
|
||||
|
@ -216,6 +216,8 @@ namespace SHADE
|
|||
}
|
||||
}
|
||||
else DrawContextMenu(component);
|
||||
ImGui::PopID();
|
||||
|
||||
}
|
||||
|
||||
template<>
|
||||
|
@ -223,7 +225,8 @@ namespace SHADE
|
|||
{
|
||||
if (!component)
|
||||
return;
|
||||
ImGui::PushID(component);
|
||||
ImGui::PushID(SHFamilyID<SHComponent>::GetID<SHColliderComponent>());
|
||||
|
||||
const auto componentType = rttr::type::get(*component);
|
||||
SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active");
|
||||
ImGui::SameLine();
|
||||
|
@ -330,6 +333,7 @@ namespace SHADE
|
|||
{
|
||||
if (!component)
|
||||
return;
|
||||
ImGui::PushID(SHFamilyID<SHComponent>::GetID<SHLightComponent>());
|
||||
const auto componentType = rttr::type::get(*component);
|
||||
SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active");
|
||||
ImGui::SameLine();
|
||||
|
@ -353,6 +357,7 @@ namespace SHADE
|
|||
{
|
||||
DrawContextMenu(component);
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
|
||||
template<>
|
||||
|
@ -360,6 +365,7 @@ namespace SHADE
|
|||
{
|
||||
if (!component)
|
||||
return;
|
||||
ImGui::PushID(SHFamilyID<SHComponent>::GetID<SHRenderable>());
|
||||
const auto componentType = rttr::type::get(*component);
|
||||
SHEditorWidgets::CheckBox("##IsActive", [component]() {return component->isActive; }, [component](bool const& active) {component->isActive = active; }, "Is Component Active");
|
||||
ImGui::SameLine();
|
||||
|
@ -397,5 +403,6 @@ namespace SHADE
|
|||
{
|
||||
DrawContextMenu(component);
|
||||
}
|
||||
ImGui::PopID();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace SHADE
|
|||
|
||||
constexpr ImGuiWindowFlags dockspaceFlags = ImGuiDockNodeFlags_PassthruCentralNode;
|
||||
|
||||
//#==============================================================#
|
||||
//#==============================================================#
|
||||
//|| Public Member Functions ||
|
||||
//#==============================================================#
|
||||
SHEditorMenuBar::SHEditorMenuBar()
|
||||
|
@ -221,13 +221,20 @@ namespace SHADE
|
|||
ImGui::BeginDisabled(editor->editorState == SHEditor::State::PLAY);
|
||||
if(ImGui::SmallButton(ICON_MD_PLAY_ARROW))
|
||||
{
|
||||
if(editor->SaveScene())
|
||||
if(editor->editorState == SHEditor::State::STOP)
|
||||
{
|
||||
if (editor->SaveScene())
|
||||
{
|
||||
editor->Play();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
editor->Play();
|
||||
}
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
ImGui::BeginDisabled(editor->editorState == SHEditor::State::PAUSE);
|
||||
ImGui::BeginDisabled(editor->editorState == SHEditor::State::STOP || editor->editorState == SHEditor::State::PAUSE);
|
||||
if(ImGui::SmallButton(ICON_MD_PAUSE))
|
||||
{
|
||||
editor->Pause();
|
||||
|
|
|
@ -85,7 +85,7 @@ namespace SHADE
|
|||
|
||||
shouldUpdateCamArm = ImGui::IsWindowHovered() && ImGui::IsKeyDown(ImGuiKey_LeftAlt) && ImGui::IsMouseDown(ImGuiMouseButton_Left);
|
||||
|
||||
if (editor->editorState != SHEditor::State::PLAY && ImGui::IsWindowFocused() && !ImGui::IsMouseDown(ImGuiMouseButton_Right))
|
||||
if (editor->editorState != SHEditor::State::PLAY && !ImGui::IsAnyItemActive() && !ImGui::IsMouseDown(ImGuiMouseButton_Right))
|
||||
{
|
||||
if (ImGui::IsKeyReleased(ImGuiKey_W))
|
||||
{
|
||||
|
@ -151,7 +151,7 @@ namespace SHADE
|
|||
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
|
||||
{
|
||||
ImGui::BeginTooltip();
|
||||
ImGui::Text("Translate [Q]");
|
||||
ImGui::Text("Translate [W]");
|
||||
ImGui::EndTooltip();
|
||||
}
|
||||
if (isTranslate)
|
||||
|
@ -169,7 +169,7 @@ namespace SHADE
|
|||
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
|
||||
{
|
||||
ImGui::BeginTooltip();
|
||||
ImGui::Text("Rotate [W]");
|
||||
ImGui::Text("Rotate [E]");
|
||||
ImGui::EndTooltip();
|
||||
}
|
||||
if (isRotate)
|
||||
|
@ -187,7 +187,7 @@ namespace SHADE
|
|||
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
|
||||
{
|
||||
ImGui::BeginTooltip();
|
||||
ImGui::Text("Scale [E]");
|
||||
ImGui::Text("Scale [R]");
|
||||
ImGui::EndTooltip();
|
||||
}
|
||||
if (isScale)
|
||||
|
|
Loading…
Reference in New Issue