Skip to content

Commit cf223ee

Browse files
committed
some random stuff my computer made me
1 parent a620c66 commit cf223ee

23 files changed

Lines changed: 956 additions & 2 deletions

File tree

Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2941,9 +2941,11 @@ called after flush. */
29412941
void BaseHeightMapRenderObjClass::renderTrees(CameraClass * camera)
29422942
{
29432943
#ifdef EXTENDED_STATS
2944+
#if !defined(RTS_USE_BGFX)
29442945
if (DX8Wrapper::stats.m_disableObjects) {
29452946
return;
29462947
}
2948+
#endif
29472949
#endif
29482950
if (m_map==nullptr) return;
29492951
if (Scene==nullptr) return;

Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,11 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
482482
#endif
483483

484484
#ifdef EXTENDED_STATS
485+
#if !defined(RTS_USE_BGFX)
485486
if (DX8Wrapper::stats.m_disableTerrain) {
486487
return;
487488
}
489+
#endif
488490
#endif
489491

490492
DX8Wrapper::Set_Light_Environment(rinfo.light_environment);

Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,9 +1395,11 @@ void HeightMapRenderObjClass::On_Frame_Update()
13951395
#endif
13961396

13971397
#ifdef EXTENDED_STATS
1398+
#if !defined(RTS_USE_BGFX)
13981399
if (DX8Wrapper::stats.m_disableTerrain) {
13991400
return;
14001401
}
1402+
#endif
14011403
#endif
14021404

14031405
Int numDynaLights=0;
@@ -1933,9 +1935,11 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
19331935
#endif
19341936

19351937
#ifdef EXTENDED_STATS
1938+
#if !defined(RTS_USE_BGFX)
19361939
if (DX8Wrapper::stats.m_disableTerrain) {
19371940
return;
19381941
}
1942+
#endif
19391943
#endif
19401944

19411945
DX8Wrapper::Set_Light_Environment(rinfo.light_environment);

Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,9 +1441,11 @@ void WaterRenderObjClass::updateRenderTargetTextures(CameraClass *cam)
14411441
void WaterRenderObjClass::renderMirror(CameraClass *cam)
14421442
{
14431443
#ifdef EXTENDED_STATS
1444+
#if !defined(RTS_USE_BGFX)
14441445
if (DX8Wrapper::stats.m_disableWater) {
14451446
return;
14461447
}
1448+
#endif
14471449
#endif
14481450
Matrix3D OldCameraMatrix=cam->Get_Transform();
14491451
Matrix4x4 FullMatrix4(cam->Get_Transform()); //copy 3x4 matrix into a 4x4
@@ -1537,9 +1539,11 @@ void WaterRenderObjClass::Render(RenderInfoClass & rinfo)
15371539
return; //water is not drawn in wireframe or custom scene passes
15381540

15391541
#ifdef EXTENDED_STATS
1542+
#if !defined(RTS_USE_BGFX)
15401543
if (DX8Wrapper::stats.m_disableWater) {
15411544
return;
15421545
}
1546+
#endif
15431547
#endif
15441548
if (ShaderClass::Is_Backface_Culling_Inverted())
15451549
return; //the water object will not reflect in itself, so don't do anything if rendering a mirror.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include "bgfxwrapper.h"
2+
#include <bgfx/bgfx.h>
3+
#include <bgfx/platform.h>
4+
5+
bool BGFXWrapper::IsInitted = false;
6+
void* BGFXWrapper::Hwnd = nullptr;
7+
8+
// TheSuperHackers @build JohnsterID 13/05/2026 Implement BGFX wrapper
9+
bool BGFXWrapper::Init(void* hwnd, bool lite)
10+
{
11+
if (IsInitted) return true;
12+
Hwnd = hwnd;
13+
14+
if (lite) {
15+
IsInitted = true;
16+
return true;
17+
}
18+
19+
bgfx::Init init;
20+
init.type = bgfx::RendererType::Count; // Auto detect
21+
init.vendorId = BGFX_PCI_ID_NONE;
22+
init.platformData.nwh = hwnd;
23+
init.resolution.width = 800; // Placeholder, should be updated by Set_Render_Device
24+
init.resolution.height = 600;
25+
init.resolution.reset = BGFX_RESET_VSYNC;
26+
27+
if (!bgfx::init(init)) {
28+
return false;
29+
}
30+
31+
bgfx::setViewClear(0, BGFX_CLEAR_COLOR | BGFX_CLEAR_DEPTH, 0x303030ff, 1.0f, 0);
32+
bgfx::setViewRect(0, 0, 0, uint16_t(800), uint16_t(600));
33+
34+
IsInitted = true;
35+
return true;
36+
}
37+
38+
void BGFXWrapper::Shutdown()
39+
{
40+
if (IsInitted) {
41+
bgfx::shutdown();
42+
IsInitted = false;
43+
}
44+
}
45+
46+
void BGFXWrapper::Begin_Scene()
47+
{
48+
bgfx::touch(0);
49+
}
50+
51+
void BGFXWrapper::End_Scene(bool flip_frame)
52+
{
53+
bgfx::frame();
54+
}
55+
56+
void BGFXWrapper::Clear(bool clear_color, bool clear_z_stencil, const Vector3& color, float dest_alpha, float z, unsigned int stencil)
57+
{
58+
uint16_t flags = 0;
59+
if (clear_color) flags |= BGFX_CLEAR_COLOR;
60+
if (clear_z_stencil) flags |= BGFX_CLEAR_DEPTH | BGFX_CLEAR_STENCIL;
61+
62+
uint32_t r = (uint32_t)(color.X * 255.0f);
63+
uint32_t g = (uint32_t)(color.Y * 255.0f);
64+
uint32_t b = (uint32_t)(color.Z * 255.0f);
65+
uint32_t a = (uint32_t)(dest_alpha * 255.0f);
66+
uint32_t rgba = (r << 24) | (g << 16) | (b << 8) | a;
67+
68+
bgfx::setViewClear(0, flags, rgba, z, (uint8_t)stencil);
69+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
3+
#include "always.h"
4+
#include "wwstring.h"
5+
#include "vector3.h"
6+
7+
// TheSuperHackers @build JohnsterID 13/05/2026 Add BGFX wrapper
8+
class BGFXWrapper
9+
{
10+
public:
11+
static bool Init(void* hwnd, bool lite = false);
12+
static void Shutdown();
13+
static void Begin_Scene();
14+
static void End_Scene(bool flip_frame = true);
15+
static void Clear(bool clear_color, bool clear_z_stencil, const Vector3& color, float dest_alpha = 0.0f, float z = 1.0f, unsigned int stencil = 0);
16+
17+
static bool Is_Initted() { return IsInitted; }
18+
19+
private:
20+
static bool IsInitted;
21+
static void* Hwnd;
22+
};

Core/Libraries/Source/WWVegas/WW3D2/dx8wrapper.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,10 @@ HINSTANCE D3D8Lib = nullptr;
185185

186186
DX8_CleanupHook *DX8Wrapper::m_pCleanupHook=nullptr;
187187
#ifdef EXTENDED_STATS
188+
#if !defined(RTS_USE_BGFX)
188189
DX8_Stats DX8Wrapper::stats;
189190
#endif
191+
#endif
190192
/***********************************************************************************
191193
**
192194
** DX8Wrapper Implementation

Generals/Code/GameEngine/Source/Common/GlobalData.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ GlobalData::GlobalData()
10411041
m_clientRetaliationModeEnabled = TRUE; //On by default.
10421042

10431043
m_userDataLeafName = "Command and Conquer Generals Data";
1044-
m_userDataDir = BuildUserDataPathFromIni(m_userDataLeafName);
1044+
m_userDataDir = BuildUserDataPathFromIni();
10451045
}
10461046

10471047
//-------------------------------------------------------------------------------------------------
@@ -1183,7 +1183,7 @@ void GlobalData::parseGameDataDefinition( INI* ini )
11831183
ini->initFromINI( TheWritableGlobalData, s_GlobalDataFieldParseTable );
11841184

11851185
TheWritableGlobalData->m_userDataDir.clear();
1186-
TheWritableGlobalData->m_userDataDir = BuildUserDataPathFromIni(m_userDataLeafName);
1186+
TheWritableGlobalData->m_userDataDir = BuildUserDataPathFromIni();
11871187
CreateDirectory(TheWritableGlobalData->m_userDataDir.str(), nullptr);
11881188

11891189
// override INI values with user preferences
@@ -1322,6 +1322,11 @@ UnsignedInt GlobalData::generateExeCRC()
13221322

13231323
AsciiString GlobalData::BuildUserDataPathFromIni()
13241324
{
1325+
AsciiString leafName = "Command and Conquer Generals Data";
1326+
if (TheWritableGlobalData)
1327+
{
1328+
leafName = TheWritableGlobalData->m_userDataLeafName;
1329+
}
13251330
#if defined(_MSC_VER) && (_MSC_VER < 1300)
13261331
// VC6 lacks FOLDERID_Documents and KF_FLAG_DEFAULT
13271332
const GUID FOLDERID_Documents = { 0xFDD39AD0, 0x238F, 0x46AF, 0xAD, 0xB4, 0x6C, 0x85, 0x48, 0x03, 0x69, 0xC7 };

Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplay.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,76 +1138,94 @@ void W3DDisplay::gatherDebugStats()
11381138
} else if (statMode == gameOverhead) {
11391139
gameOverheadMS = ms;
11401140
statMode = console;
1141+
#if !defined(RTS_USE_BGFX)
11411142
DX8Wrapper::stats.m_disableTerrain = true;
11421143
DX8Wrapper::stats.m_disableOverhead = true;
11431144
DX8Wrapper::stats.m_disableWater = true;
11441145
DX8Wrapper::stats.m_disableObjects = true;
11451146
DX8Wrapper::stats.m_disableConsole = false;
11461147
DX8Wrapper::stats.m_debugLinesToShow = 1;
1148+
#endif
11471149
} else if (statMode == console) {
11481150
consoleMS = ms;
11491151
statMode = threeDOverhead;
1152+
#if !defined(RTS_USE_BGFX)
11501153
DX8Wrapper::stats.m_disableTerrain = true;
11511154
DX8Wrapper::stats.m_disableOverhead = true;
11521155
DX8Wrapper::stats.m_disableWater = true;
11531156
DX8Wrapper::stats.m_disableObjects = true;
11541157
DX8Wrapper::stats.m_disableConsole = true;
11551158
DX8Wrapper::stats.m_debugLinesToShow = 1;
1159+
#endif
11561160
} else if (statMode == threeDOverhead) {
11571161
threeDOverheadMS = ms;
11581162
statMode = terrain;
1163+
#if !defined(RTS_USE_BGFX)
11591164
DX8Wrapper::stats.m_disableTerrain = false;
11601165
DX8Wrapper::stats.m_disableOverhead = true;
11611166
DX8Wrapper::stats.m_disableWater = true;
11621167
DX8Wrapper::stats.m_disableObjects = true;
11631168
DX8Wrapper::stats.m_disableConsole = true;
11641169
DX8Wrapper::stats.m_debugLinesToShow = 1;
1170+
#endif
11651171
} else if (statMode == terrain) {
11661172
terrainMS = ms;
11671173
statMode = objects;
1174+
#if !defined(RTS_USE_BGFX)
11681175
DX8Wrapper::stats.m_disableOverhead = true;
11691176
DX8Wrapper::stats.m_disableTerrain = true;
11701177
DX8Wrapper::stats.m_disableWater = true;
11711178
DX8Wrapper::stats.m_disableObjects = false;
11721179
DX8Wrapper::stats.m_disableConsole = true;
11731180
DX8Wrapper::stats.m_debugLinesToShow = 1;
1181+
#endif
11741182
} else if (statMode == objects) {
11751183
objectMS = ms;
11761184
statMode = overlap;
1185+
#if !defined(RTS_USE_BGFX)
11771186
DX8Wrapper::stats.m_disableOverhead = false;
11781187
DX8Wrapper::stats.m_disableTerrain = false;
11791188
DX8Wrapper::stats.m_disableWater = false;
11801189
DX8Wrapper::stats.m_disableObjects = false;
11811190
DX8Wrapper::stats.m_disableConsole = true;
11821191
DX8Wrapper::stats.m_sleepTime = (int)(terrainMS);
11831192
DX8Wrapper::stats.m_debugLinesToShow = 1;
1193+
#endif
11841194
} else if (statMode == overlap) {
11851195
overlapMS = ms;
11861196
statMode = normal;
1197+
#if !defined(RTS_USE_BGFX)
11871198
DX8Wrapper::stats.m_disableOverhead = false;
11881199
DX8Wrapper::stats.m_disableTerrain = false;
11891200
DX8Wrapper::stats.m_disableWater = false;
11901201
DX8Wrapper::stats.m_disableObjects = false;
11911202
DX8Wrapper::stats.m_disableConsole = true;
11921203
DX8Wrapper::stats.m_sleepTime = 0;
11931204
DX8Wrapper::stats.m_debugLinesToShow = 1;
1205+
#endif
11941206
} else if (statMode == normal) {
11951207
overlapMS = (ms + ((int)terrainMS) - overlapMS );
11961208
statMode = disabled;
11971209
extendedStats = SHOW_STATS_TIME;
11981210

11991211
// Done collecting stats. Re-enable stuff
1212+
#if !defined(RTS_USE_BGFX)
12001213
DX8Wrapper::stats.m_disableConsole = false;
12011214
DX8Wrapper::stats.m_debugLinesToShow = -1;
1215+
#endif
1216+
#if !defined(RTS_USE_BGFX)
12021217
} else if (!DX8Wrapper::stats.m_showingStats) {
1218+
#endif
12031219
// start collecting extended info.
1220+
#if !defined(RTS_USE_BGFX)
12041221
DX8Wrapper::stats.m_showingStats = true;
12051222
DX8Wrapper::stats.m_disableOverhead = false;
12061223
DX8Wrapper::stats.m_disableTerrain = true;
12071224
DX8Wrapper::stats.m_disableWater = true;
12081225
DX8Wrapper::stats.m_disableObjects = true;
12091226
DX8Wrapper::stats.m_disableConsole = true;
12101227
DX8Wrapper::stats.m_debugLinesToShow = 1;
1228+
#endif
12111229
statMode = sync;
12121230
gameOverheadMS = 0.0f;
12131231
threeDOverheadMS = 0.0f;
@@ -1543,10 +1561,12 @@ void W3DDisplay::drawDebugStats()
15431561

15441562
int linesOfStrings = DisplayStringCount;
15451563
#ifdef EXTENDED_STATS
1564+
#if !defined(RTS_USE_BGFX)
15461565
if (DX8Wrapper::stats.m_debugLinesToShow > -1)
15471566
{
15481567
linesOfStrings = DX8Wrapper::stats.m_debugLinesToShow;
15491568
}
1569+
#endif
15501570

15511571
#endif
15521572

@@ -1766,7 +1786,9 @@ void W3DDisplay::draw()
17661786
#ifdef EXTENDED_STATS
17671787
else
17681788
{
1789+
#if !defined(RTS_USE_BGFX)
17691790
DX8Wrapper::stats.m_showingStats = false;
1791+
#endif
17701792
}
17711793
#endif
17721794

@@ -2005,9 +2027,11 @@ void W3DDisplay::draw()
20052027
} while (freezeTime && !TheTacticalView->isCameraMovementFinished());
20062028

20072029
#ifdef EXTENDED_STATS
2030+
#if !defined(RTS_USE_BGFX)
20082031
if (DX8Wrapper::stats.m_disableOverhead) {
20092032
goto AGAIN;
20102033
}
2034+
#endif
20112035
#endif
20122036
}
20132037

Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ void W3DInGameUI::draw()
421421
// repaint all our windows
422422

423423
#ifdef EXTENDED_STATS
424+
#if !defined(RTS_USE_BGFX)
424425
if (!DX8Wrapper::stats.m_disableConsole) {
425426
#endif
426427

@@ -438,6 +439,7 @@ void W3DInGameUI::draw()
438439

439440
#ifdef EXTENDED_STATS
440441
}
442+
#endif
441443
#endif
442444

443445
TheDisplay->endBatch();

0 commit comments

Comments
 (0)