Fix minimap MSAA pipeline, defer swapchain recreation, fix player character spawn order

- Add .setMultisample() to minimap display pipeline and recreatePipelines() for MSAA changes
- Defer all swapchain recreation in window.cpp to beginFrame() via markSwapchainDirty()
  to prevent mid-frame render pass destruction crashes on resolution/fullscreen change
- Move spawnPlayerCharacter() call to after loadTestTerrain() where character renderer exists
This commit is contained in:
Kelsi 2026-02-22 03:49:44 -08:00
parent ebd0084c22
commit e8e859384e
6 changed files with 57 additions and 3 deletions

View file

@ -3099,6 +3099,13 @@ void Application::loadOnlineWorldTerrain(uint32_t mapId, float x, float y, float
LOG_INFO("Online world terrain loading initiated");
}
// Character renderer is created inside loadTestTerrain(), so spawn the
// player model now that the renderer actually exists.
if (!playerCharacterSpawned) {
spawnPlayerCharacter();
loadEquippedWeapons();
}
showProgress("Streaming terrain tiles...", 0.35f);
// Wait for surrounding terrain tiles to stream in

View file

@ -89,7 +89,7 @@ void Window::pollEvents() {
width = event.window.data1;
height = event.window.data2;
if (vkContext) {
vkContext->recreateSwapchain(width, height);
vkContext->markSwapchainDirty();
}
LOG_DEBUG("Window resized to ", width, "x", height);
}
@ -120,7 +120,7 @@ void Window::setFullscreen(bool enable) {
height = windowedHeight;
}
if (vkContext) {
vkContext->recreateSwapchain(width, height);
vkContext->markSwapchainDirty();
}
}
@ -145,7 +145,7 @@ void Window::applyResolution(int w, int h) {
windowedWidth = w;
windowedHeight = h;
if (vkContext) {
vkContext->recreateSwapchain(width, height);
vkContext->markSwapchainDirty();
}
}