mirror of
https://github.com/antopilo/Nuake.git
synced 2026-01-06 06:09:52 +03:00
Viewport now resets to the correct camera after changing scene
This commit is contained in:
@@ -121,6 +121,11 @@ bool SceneEditorWindow::IsFocused() const
|
|||||||
void SceneEditorWindow::SetScene(Ref<Scene> scene)
|
void SceneEditorWindow::SetScene(Ref<Scene> scene)
|
||||||
{
|
{
|
||||||
editorContext.SetScene(scene);
|
editorContext.SetScene(scene);
|
||||||
|
|
||||||
|
for (auto& widget : widgets)
|
||||||
|
{
|
||||||
|
widget->OnSceneChanged(scene);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Scene> SceneEditorWindow::GetScene() const
|
Ref<Scene> SceneEditorWindow::GetScene() const
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ public:
|
|||||||
virtual void Update(float ts) = 0;
|
virtual void Update(float ts) = 0;
|
||||||
virtual void Draw() = 0;
|
virtual void Draw() = 0;
|
||||||
|
|
||||||
|
virtual void OnSceneChanged(Ref<Nuake::Scene> scene) {}
|
||||||
|
|
||||||
void DockTo(uint32_t dockId)
|
void DockTo(uint32_t dockId)
|
||||||
{
|
{
|
||||||
ImGui::DockBuilderDockWindow(widgetName.c_str(), dockId);
|
ImGui::DockBuilderDockWindow(widgetName.c_str(), dockId);
|
||||||
|
|||||||
@@ -182,4 +182,22 @@ void ViewportWidget::Draw()
|
|||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
}
|
}
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ViewportWidget::OnSceneChanged(Ref<Nuake::Scene> scene)
|
||||||
|
{
|
||||||
|
auto& vkRenderer = Nuake::VkRenderer::Get();
|
||||||
|
|
||||||
|
// Recreate new viewport with new scene with the same resolution
|
||||||
|
const Vector2 currentResolution = sceneViewport->GetViewportSize();
|
||||||
|
|
||||||
|
// Remove old viewport
|
||||||
|
vkRenderer.RemoveViewport(sceneViewport->GetID());
|
||||||
|
|
||||||
|
// Create new viewport with same reoslution
|
||||||
|
const UUID viewId = editorContext.GetScene()->m_EditorCamera->ID;
|
||||||
|
auto viewport = vkRenderer.CreateViewport(viewId, currentResolution);
|
||||||
|
vkRenderer.RegisterSceneViewport(scene, viewport->GetID());
|
||||||
|
|
||||||
|
sceneViewport = viewport;
|
||||||
}
|
}
|
||||||
@@ -29,4 +29,5 @@ public:
|
|||||||
public:
|
public:
|
||||||
void Update(float ts) override;
|
void Update(float ts) override;
|
||||||
void Draw() override;
|
void Draw() override;
|
||||||
|
void OnSceneChanged(Ref<Nuake::Scene> scene) override;
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user