add AnimationComponent, Skeleton, AnimationClip; add single Renderer3D class, remove some useless code; problem now renderer2D cannot blend with Renderer3D

This commit is contained in:
2026-03-11 09:19:05 +08:00
parent eb0a463370
commit a265e71e1a
29 changed files with 2278 additions and 1466 deletions

View File

@ -76,16 +76,6 @@ namespace Prism
m_EditorScene->OnRenderEditor(deltaTime, m_EditorCamera);
if (m_DrawOnTopBoundingBoxes)
{
Renderer::BeginRenderPass(SceneRenderer::GetFinalRenderPass(), false);
const auto viewProj = m_EditorCamera.GetViewProjection();
Renderer2D::BeginScene(viewProj, false);
// TODO: Renderer::DrawAABB(m_MeshEntity.GetComponent<MeshComponent>(), m_MeshEntity.GetComponent<TransformComponent>());
Renderer2D::EndScene();
Renderer::EndRenderPass();
}
if (!m_SelectionContext.empty() && false)
{
auto& selection = m_SelectionContext[0];
@ -530,10 +520,7 @@ namespace Prism
}
}
if (UI::Property("Show Bounding Boxes", m_UIShowBoundingBoxes))
ShowBoundingBoxes(m_UIShowBoundingBoxes, m_UIShowBoundingBoxesOnTop);
if (m_UIShowBoundingBoxes && UI::Property("On Top", m_UIShowBoundingBoxesOnTop))
ShowBoundingBoxes(m_UIShowBoundingBoxes, m_UIShowBoundingBoxesOnTop);
UI::Property("Show Bounding Boxes", m_UIShowBoundingBoxes);
const char* label = m_SelectionMode == SelectionMode::Entity ? "Entity" : "Mesh";
if (ImGui::Button(label))
@ -903,7 +890,7 @@ namespace Prism
bool EditorLayer::OnKeyPressedEvent(KeyPressedEvent& e)
{
if (m_ViewportPanelFocused)
if (m_ViewportPanelFocused || m_ViewportPanelHovered)
{
switch (e.GetKeyCode())
{
@ -921,7 +908,7 @@ namespace Prism
break;
case KeyCode::F:
{
if (m_SelectionContext.size() == 0)
if (m_SelectionContext.empty())
break;
Entity selectedEntity = m_SelectionContext[0].Entity;
@ -964,7 +951,7 @@ namespace Prism
case KeyCode::B:
// Toggle bounding boxes
m_UIShowBoundingBoxes = !m_UIShowBoundingBoxes;
ShowBoundingBoxes(m_UIShowBoundingBoxes, m_UIShowBoundingBoxesOnTop);
ShowBoundingBoxes(m_UIShowBoundingBoxes,false);
break;
case KeyCode::D:
if (m_SelectionContext.size())
@ -1053,7 +1040,21 @@ namespace Prism
return a.Distance < b.Distance;
});
if (!m_SelectionContext.empty())
{
if (auto alreadySelectedEntity = m_SceneHierarchyPanel->GetSelected();
m_SelectionContext.size() != 1 && alreadySelectedEntity)
{
const auto alreadySelectedEntityID = alreadySelectedEntity.GetUUID();
for (const auto& selectedEntity : m_SelectionContext)
{
if (alreadySelectedEntityID == selectedEntity.Entity.GetUUID()) continue;
OnSelected(selectedEntity);
return false;
}
}
OnSelected(m_SelectionContext[0]);
}
}
}
return false;
@ -1062,7 +1063,6 @@ namespace Prism
void EditorLayer::ShowBoundingBoxes(bool show, bool onTop)
{
SceneRenderer::GetOptions().ShowBoundingBoxes = show && !onTop;
m_DrawOnTopBoundingBoxes = show && onTop;
}
void EditorLayer::SelectEntity(Entity entity)