diff options
Diffstat (limited to 'src/port/Engine.cpp')
| -rw-r--r-- | src/port/Engine.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 4c6962dc..b0056bb3 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -45,6 +45,7 @@ namespace fs = std::filesystem; extern "C" { +bool prevAltAssets = false; float gInterpolationStep = 0.0f; #include <sf64thread.h> #include <macros.h> @@ -172,6 +173,9 @@ GameEngine::GameEngine() { loader->RegisterResourceFactory(std::make_shared<SF64::ResourceFactoryBinarySoundFontV0>(), RESOURCE_FORMAT_BINARY, "SoundFont", static_cast<uint32_t>(SF64::ResourceType::SoundFont), 0); + + prevAltAssets = CVarGetInteger("gEnhancements.Mods.AlternateAssets", 0); + context->GetResourceManager()->SetAltAssetsEnabled(prevAltAssets); } void GameEngine::Create() { @@ -191,8 +195,6 @@ void GameEngine::Destroy() { free(MemoryPool.memory); } -bool ShouldClearTextureCacheAtEndOfFrame = false; - void GameEngine::StartFrame() const { using Ship::KbScancode; const int32_t dwScancode = this->context->GetWindow()->GetLastScancode(); @@ -201,8 +203,7 @@ void GameEngine::StartFrame() const { switch (dwScancode) { case KbScancode::LUS_KB_TAB: { // Toggle HD Assets - CVarSetInteger("gAltAssets", !CVarGetInteger("gAltAssets", 0)); - ShouldClearTextureCacheAtEndOfFrame = true; + CVarSetInteger("gEnhancements.Mods.AlternateAssets", !CVarGetInteger("gEnhancements.Mods.AlternateAssets", 0)); break; } default: @@ -326,9 +327,11 @@ void GameEngine::RunCommands(Gfx* Commands, const std::vector<std::unordered_map gfx_end_frame(); } - if (ShouldClearTextureCacheAtEndOfFrame) { + bool curAltAssets = CVarGetInteger("gEnhancements.Mods.AlternateAssets", 0); + if (prevAltAssets != curAltAssets) { + prevAltAssets = curAltAssets; + Ship::Context::GetInstance()->GetResourceManager()->SetAltAssetsEnabled(curAltAssets); gfx_texture_cache_clear(); - ShouldClearTextureCacheAtEndOfFrame = false; } } |
