From 4702cd238c2724ecc7730bc9db88f8afb108a353 Mon Sep 17 00:00:00 2001 From: fgenesis Date: Mon, 4 Nov 2024 04:42:42 +0100 Subject: [PATCH] fix grid of type OT_BLACKINVIS being drawn like OT_BLACK after map load reconstructGrid() or editor use fixed this, but that usually didn't happen when playing vanilla maps normally Again, the dreaded black edges, should now be fixed for good... --- Aquaria/Game.cpp | 81 ++++++++++++++++-------------------------- Aquaria/GridRender.cpp | 2 +- 2 files changed, 32 insertions(+), 51 deletions(-) diff --git a/Aquaria/Game.cpp b/Aquaria/Game.cpp index a5474ec..ee20125 100644 --- a/Aquaria/Game.cpp +++ b/Aquaria/Game.cpp @@ -2722,6 +2722,27 @@ void Game::applyState() gridRenderUser1 = new GridRender(OT_USER1); gridRenderUser2 = new GridRender(OT_USER2); + blackRender->alpha = 1; + blackRender->color = Vector(0, 0, 0); + blackRender->setBlendType(BLEND_DISABLED); + + gridRender->color = Vector(1, 0, 0); + gridRender2->color = Vector(1, 1, 0); + gridRender3->color = Vector(1, 0.5f, 0); + edgeRender->color = Vector(0.3f, 0, 0.6f); + gridRenderEnt->color = Vector(0, 1, 0.5); + gridRenderUser1->color = Vector(1, 0, 1); + gridRenderUser2->color = Vector(1, 1, 1); + + addRenderObject(blackRender, LR_ELEMENTS4); + addRenderObject(gridRender, LR_DEBUG_TEXT); + addRenderObject(gridRender2, LR_DEBUG_TEXT); + addRenderObject(gridRender3, LR_DEBUG_TEXT); + addRenderObject(edgeRender, LR_DEBUG_TEXT); + addRenderObject(gridRenderEnt, LR_DEBUG_TEXT); + addRenderObject(gridRenderUser1, LR_DEBUG_TEXT); + addRenderObject(gridRenderUser2, LR_DEBUG_TEXT); + if (verbose) debugLog("Loading Scene"); if(!loadScene(sceneToLoad)) { @@ -2748,45 +2769,10 @@ void Game::applyState() songLineRender = new SongLineRender(); addRenderObject(songLineRender, LR_HUD); - - gridRender->color = Vector(1, 0, 0); - addRenderObject(gridRender, LR_DEBUG_TEXT); - gridRender->alpha = 0; - - gridRender2->color = Vector(1, 1, 0); - addRenderObject(gridRender2, LR_DEBUG_TEXT); - gridRender2->alpha = 0; - - gridRender3->color = Vector(1, 0.5f, 0); - addRenderObject(gridRender3, LR_DEBUG_TEXT); - gridRender3->alpha = 0; - - edgeRender->color = Vector(0.3f, 0, 0.6f); - addRenderObject(edgeRender, LR_DEBUG_TEXT); - edgeRender->alpha = 0; - - gridRenderEnt->color = Vector(0, 1, 0.5); - addRenderObject(gridRenderEnt, LR_DEBUG_TEXT); - gridRenderEnt->alpha = 0; - - addRenderObject(gridRenderUser1, LR_DEBUG_TEXT); - gridRenderUser1->color = Vector(1, 0, 1); - gridRenderUser1->alpha = 0; - - addRenderObject(gridRenderUser2, LR_DEBUG_TEXT); - gridRenderUser2->color = Vector(1, 1, 1); - gridRenderUser2->alpha = 0; - waterSurfaceRender = new WaterSurfaceRender(); //waterSurfaceRender->setRenderPass(-1); addRenderObject(waterSurfaceRender, LR_WATERSURFACE); - blackRender->color = Vector(0, 0, 0); - //blackRender->alpha = 0; - blackRender->setBlendType(BLEND_DISABLED); - addRenderObject(blackRender, LR_ELEMENTS4); - blackRender->rebuildBuffers(this->obsRows); - miniMapRender = new MiniMapRender; // position is set in minimaprender::onupdate miniMapRender->scale = Vector(0.55f, 0.55f); @@ -4058,24 +4044,19 @@ static void checkgridrender(GridRender *gr, ObsType obs) void Game::updateGridRender(ObsType obs) { - // These are usually not visible. Delay rebuild until they are actually shown. - checkgridrender(gridRender, obs); - checkgridrender(gridRender2, obs); - checkgridrender(gridRender3, obs); - checkgridrender(edgeRender, obs); - checkgridrender(gridRenderEnt, obs); - checkgridrender(gridRenderUser1, obs); - checkgridrender(gridRenderUser2, obs); - // This is normally not necessary, because black is only changed by the editor. // Keeping it here possibly for future mod compat. // It's also always shown, so we can immediately rebuild it - if(obs & OT_BLACK) - { - // Don't pass this->obsRows here (which is the raw data)! - // Need the changes done by trimGrid() -> need to collect rows anew. - blackRender->rebuildBuffers(); - } + checkgridrender(blackRender, obs); + + // These are usually not visible. Delay rebuild until they are actually shown. + checkgridrender(edgeRender, obs); + checkgridrender(gridRender, obs); + checkgridrender(gridRender2, obs); + checkgridrender(gridRender3, obs); + checkgridrender(gridRenderEnt, obs); + checkgridrender(gridRenderUser1, obs); + checkgridrender(gridRenderUser2, obs); } Vector Game::getCameraPositionFor(const Vector &pos) diff --git a/Aquaria/GridRender.cpp b/Aquaria/GridRender.cpp index 03a507d..20b8261 100644 --- a/Aquaria/GridRender.cpp +++ b/Aquaria/GridRender.cpp @@ -76,7 +76,7 @@ GridRender::GridRender(ObsType obsType) position.z = 5; cull = false; - alpha = 0.5f; + alpha = 0.0f; this->scale.x = TILE_SIZE; // See comment about value scaling below this->scale.y = TILE_SIZE; }