Skip to content

Commit 03cda3a

Browse files
committed
Use the new ImageSpaceStage from RTM
1 parent e2c641a commit 03cda3a

4 files changed

Lines changed: 19 additions & 25 deletions

File tree

NewVegasReloaded/Main.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,14 @@ extern "C" {
5151
if (hRTM) {
5252
Logger::Log("Real Time Menus found, initializing functions");
5353
TheGameMenuManager->IsLiveMenu = (GameMenuManager::MenuPauseState(__cdecl*)(uint32_t, bool, bool))GetProcAddress(hRTM, "IsLiveMenu");
54-
}
54+
TheGameMenuManager->GetImageSpaceStage = (GameMenuManager::ImageSpaceStage(__cdecl*)())GetProcAddress(hRTM, "GetImageSpaceStage");
5555

56-
56+
if (!TheGameMenuManager->IsLiveMenu || !TheGameMenuManager->GetImageSpaceStage) {
57+
MessageBox(NULL, L"Failed to load Real Time Menus functions.\nNew Vegas Reloaded cannot be used without them, please make sure to update RTM.", L"New Vegas Reloaded", MB_OK | MB_ICONERROR);
58+
ExitProcess(0);
59+
}
60+
61+
}
5762

5863
typedef void(__cdecl pfn_RegisterEOFEffect)(uint32_t auiIndex, ImageSpaceEffect* apEffect);
5964
HMODULE hShaderLoader = GetModuleHandle(L"Fallout Shader Loader.dll");

src/NewVegas/Hooks/Render.cpp

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,6 @@ float __fastcall GetWaterHeightLODHook(TESWorldSpace* This, UInt32 edx) {
127127

128128
}
129129

130-
bool bSkippedRender_RenderedMenu = false;
131-
bool bDoneRender_LockPickMenu = false;
132-
133130
void(__cdecl* ProcessImageSpaceShaders)(NiDX9Renderer*, BSRenderedTexture*, BSRenderedTexture*) = (void(__cdecl*)(NiDX9Renderer*, BSRenderedTexture*, BSRenderedTexture*))Hooks::ProcessImageSpaceShaders;
134131
void __cdecl ProcessImageSpaceShadersHook(NiDX9Renderer* Renderer, BSRenderedTexture* SourceTarget, BSRenderedTexture* DestinationTarget) {
135132
bool bLiveRenderedMenu = false; // FORenderedMenu, FOPipBoyManager
@@ -146,31 +143,15 @@ void __cdecl ProcessImageSpaceShadersHook(NiDX9Renderer* Renderer, BSRenderedTex
146143
TheShaderManager->RenderAfterTonemapping = !DestinationTarget;
147144

148145
if (bLive3DMenu) {
149-
if (bDoneRender_LockPickMenu) {
150-
bDoneRender_LockPickMenu = false;
146+
if (bLive3DMenu && TheGameMenuManager->GetImageSpaceStage && TheGameMenuManager->GetImageSpaceStage() != GameMenuManager::IS_BG) {
151147
ProcessImageSpaceShaders(Renderer, SourceTarget, DestinationTarget);
152148
return;
153149
}
154-
else {
155-
bDoneRender_LockPickMenu = true;
156-
}
157-
}
158-
else {
159-
bDoneRender_LockPickMenu = false;
160150
}
161151

162-
if (bLiveRenderedMenu) {
163-
if (!bSkippedRender_RenderedMenu) {
164-
bSkippedRender_RenderedMenu = true;
165-
ProcessImageSpaceShaders(Renderer, SourceTarget, DestinationTarget);
166-
return;
167-
}
168-
else {
169-
bSkippedRender_RenderedMenu = false;
170-
}
171-
}
172-
else {
173-
bSkippedRender_RenderedMenu = false;
152+
if (bLiveRenderedMenu && TheGameMenuManager->GetImageSpaceStage && TheGameMenuManager->GetImageSpaceStage() == GameMenuManager::IS_BG) {
153+
ProcessImageSpaceShaders(Renderer, SourceTarget, DestinationTarget);
154+
return;
174155
}
175156

176157
IDirect3DDevice9* Device = TheRenderManager->device;

src/core/GameMenuManager.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ void GameMenuManager::Initialize() {
131131
TheGameMenuManager->Keys[211] = "Delete";
132132

133133
TheGameMenuManager->IsLiveMenu = nullptr;
134+
TheGameMenuManager->GetImageSpaceStage = nullptr;
134135
}
135136

136137
void GameMenuManager::UpdateSettings() {

src/core/GameMenuManager.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,14 @@ class GameMenuManager { // Never disposed
5151
MENU_MIXED = 2, // Does not pause the game, runs only MenuMode
5252
};
5353

54+
enum ImageSpaceStage : uint32_t {
55+
IS_NONE = 0, // No IS effects are currently being rendered
56+
IS_BG = 1, // IS effects for the background are being rendered
57+
IS_FG = 2, // IS effects for the foreground are being rendered
58+
};
59+
5460
MenuPauseState(__cdecl* IsLiveMenu)(uint32_t aeMenu, bool abCheckInstances, bool abGameModeCheck);
61+
ImageSpaceStage(__cdecl* GetImageSpaceStage)();
5562

5663
int HeaderYPos;
5764
int MenuHeight;

0 commit comments

Comments
 (0)