Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS

Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
This commit is contained in:
Cyd
2026-06-24 21:28:16 -05:00
commit 2b8ca921cb
66341 changed files with 7923174 additions and 0 deletions
@@ -0,0 +1,313 @@
#include "MW4Headers.hpp"
#include "GUIStaticView.hpp"
#include <ElementRenderer\StateChange.hpp>
#include <ElementRenderer\ScreenQuadsElement.hpp>
#include <ElementRenderer\CameraElement.hpp>
#include <MLR\MLRTexture.hpp>
#include <MLR\MLRTexturePool.hpp>
using MidLevelRenderer::MLRTexturePool;
using MidLevelRenderer::MLRTexture;
ElementRenderer::CameraElement
*GUIStaticView::s_Camera = NULL;
bool
GUIStaticView::s_MarkForAttach = false;
const Stuff::Scalar c_ONE_OVER_256 = (1.0f / 256.0f);
//#######################################################################
//########################### GUIWeaponManager #####################
//#######################################################################
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GUIStaticView::GUIStaticView() :
Plug(Plug::DefaultData),
m_screenTiles(NULL)
{
m_numTiles = 0;
isShown = false;
ChangeResolution();
Hide();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
GUIStaticView::~GUIStaticView()
{
if(m_screenTiles.GetCurrent())
{
delete m_screenTiles.GetCurrent();
m_screenTiles.Remove();
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::Initialize()
{
Check_Object(this);
s_MarkForAttach = false;
m_numTiles = 0;
isShown = false;
ChangeResolution();
Hide();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::ChangeResolution()
{
Check_Object(this);
if(m_screenTiles.GetCurrent())
{
delete m_screenTiles.GetCurrent();
m_screenTiles.Remove();
}
Scalar ratio = 256.0f / Environment.screenHeight;
int left_over = Environment.screenHeight % 256;
m_numTiles = (int)((Environment.screenHeight * c_ONE_OVER_256) + 1);
gos_PushCurrentHeap(ElementRenderer::ScreenQuadsElement::s_Heap);
ElementRenderer::ScreenQuadsElement *screen_tiles =
new ElementRenderer::ScreenQuadsElement(m_numTiles);
gos_PopCurrentHeap();
for(int i=0; i<m_numTiles; i++)
{
//Pointers into the screen quad
Vector4D *poly_corners;
RGBAColor *poly_colors;
Vector2DOf<Scalar> *poly_UVs;
bool *poly_status;
Vector4D corners[4];
RGBAColor colors[4];
Vector2DOf<Scalar> UVs[4];
screen_tiles->GetQuadData(
i,
&poly_corners,
&poly_colors,
&poly_UVs,
&poly_status
);
colors[0].red = colors[1].red = colors[2].red = colors[3].red = 1.0f;
colors[0].green = colors[1].green = colors[2].green = colors[3].green = 1.0f;
colors[0].blue = colors[1].blue = colors[2].blue = colors[3].blue = 1.0f;
colors[0].alpha = colors[1].alpha = colors[2].alpha = colors[3].alpha = 1.0f;
Mem_Copy(poly_colors, colors, 4 * sizeof(RGBAColor), 4 * sizeof(RGBAColor));
UVs[0].x = 0.0f;
UVs[0].y = 0.0f;
UVs[1].x = 0.0615f;
UVs[1].y = 0.0f;
UVs[2].x = 0.0615f;
if((i + 1) <m_numTiles)
UVs[2].y = 1.0f;
else
UVs[2].y = left_over * c_ONE_OVER_256;
UVs[3].x = 0.0f;
UVs[3].y = UVs[2].y;
Mem_Copy(poly_UVs, UVs, 4 * sizeof(Vector2DOf<Scalar>), 4 * sizeof(Vector2DOf<Scalar>));
corners[0].x = 0.0f;
if(i > 0)
corners[0].y = i * ratio/* - 1.0f / Environment.screenHeight*/;
else
corners[0].y = 0.0f;
corners[1].x = 1.0f;
corners[1].y = corners[0].y;
corners[2].x = 1.0f;
if((i + 1) <m_numTiles)
corners[2].y = (i + 1) * ratio/* - 1.0f / Environment.screenHeight*/;
else
corners[2].y = 1.0f;
corners[3].x = 0.0f;
corners[3].y = corners[2].y;
corners[0].z = 0.0f;
corners[0].w = 1.0f;
corners[1].z = 0.0f;
corners[1].w = 1.0f;
corners[2].z = 0.0f;
corners[2].w = 1.0f;
corners[3].z = 0.0f;
corners[3].w = 1.0f;
Mem_Copy(poly_corners, corners, 4 * sizeof(Vector4D), 4 * sizeof(Vector4D));
*poly_status = IsOn();
}
ElementRenderer::StateChange *state_change = new ElementRenderer::StateChange();
Check_Object(MLRTexturePool::Instance);
MLRTexture *quad_texture = (*MLRTexturePool::Instance)("Static", 0);
if(!quad_texture)
{
quad_texture = MLRTexturePool::Instance->Add("Static", 0);
}
Check_Object(quad_texture);
state_change->SetTextureHandle(quad_texture->GetTextureHandle());
// state_change->SetAlphaMode(ElementRenderer::StateChange::AlphaInvAlphaMode);
state_change->SetAlphaMode(MidLevelRenderer::MLRState::OneOneMode);
state_change->SetRenderPriority(ElementRenderer::StateChange::HUDPriority0);
state_change->DisableBackfaceCulling();
state_change->DisableChildBackfaceControl();
state_change->SetFogMode(ElementRenderer::StateChange::DisableFogMode);
state_change->DisableChildFogControl();
state_change->DisableZBufferWrite();
state_change->DisableChildZBufferWriteControl();
state_change->DisableZBufferCompare();
state_change->DisableChildZBufferCompareControl();
// state_change->DisableTextureWrap();
state_change->EnableTextureWrap();
state_change->DisableChildTextureWrapControl();
screen_tiles->AdoptStateChange(state_change);
m_screenTiles.Add(screen_tiles);
if(s_Camera)
{
s_Camera->AttachChild(m_screenTiles.GetCurrent());
m_screenTiles.GetCurrent()->Sync();
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::Hide()
{
Check_Object(this);
for(int i=0; i<m_numTiles; i++)
{
m_screenTiles.GetCurrent()->SetQuadStatus(i, false);
}
isShown = false;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::Show()
{
Check_Object(this);
for(int i=0; i<m_numTiles; i++)
{
m_screenTiles.GetCurrent()->SetQuadStatus(i, true);
}
if(s_MarkForAttach)
{
s_Camera->AttachChild(m_screenTiles.GetCurrent());
m_screenTiles.GetCurrent()->Sync();
s_MarkForAttach = false;
}
isShown = true;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::Animate()
{
//
// Pick new, random UV coordinates
//
Stuff::Scalar fUVx = ((float)Stuff::Random::GetLessThan(256))*c_ONE_OVER_256;
Stuff::Scalar fUVy = ((float)Stuff::Random::GetLessThan(256))*c_ONE_OVER_256;
int left_over = Environment.screenHeight % 256;
for(int i=0; i<m_numTiles; i++)
{
//Pointers into the screen quad
Vector4D *poly_corners;
RGBAColor *poly_colors;
Vector2DOf<Scalar> *poly_UVs;
bool *poly_status;
Vector4D corners[4];
RGBAColor colors[4];
Vector2DOf<Scalar> UVs[4];
m_screenTiles.GetCurrent()->GetQuadData(
i,
&poly_corners,
&poly_colors,
&poly_UVs,
&poly_status
);
/* UVs[0].x = 0.0f;
UVs[0].y = 0.0f;
UVs[1].x = 0.0615f;
UVs[1].y = 0.0f;
UVs[2].x = 0.0615f;
if((i + 1) <m_numTiles)
UVs[2].y = 1.0f;
else
UVs[2].y = left_over / 256.0f;
UVs[3].x = 0.0f;
UVs[3].y = UVs[2].y;
*/
UVs[0].x = fUVx;
UVs[0].y = fUVy;;
UVs[1].x = fUVx + 1.0f;
UVs[1].y = fUVy;
UVs[2].x = UVs[1].x;
if((i + 1) <m_numTiles)
UVs[2].y = fUVy + 1.0f;
else
UVs[2].y = fUVy + (left_over * c_ONE_OVER_256)/* *1.0f*/;
UVs[3].x = fUVx;
UVs[3].y = UVs[2].y;
Mem_Copy(poly_UVs, UVs, 4 * sizeof(Vector2DOf<Scalar>), 4 * sizeof(Vector2DOf<Scalar>));
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::AdoptCamera(ElementRenderer::CameraElement *camera)
{
Check_Pointer(camera);
s_Camera = camera;
s_MarkForAttach = true;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
GUIStaticView::RemoveCamera()
{
s_Camera = NULL;
}