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.
118 lines
2.3 KiB
C++
118 lines
2.3 KiB
C++
#pragma once
|
|
#define MLR_MLRSHADOWLIGHT_HPP
|
|
|
|
#include "MLR.hpp"
|
|
#include "MLRInfiniteLightWithFalloff.hpp"
|
|
|
|
namespace MidLevelRenderer {
|
|
|
|
//##########################################################################
|
|
//###################### MLRShadowLight #############################
|
|
//##########################################################################
|
|
|
|
class MLRShadowLight:
|
|
public MLRInfiniteLightWithFalloff
|
|
{
|
|
public:
|
|
static void
|
|
InitializeClass();
|
|
static void
|
|
TerminateClass();
|
|
|
|
MLRShadowLight();
|
|
MLRShadowLight(
|
|
Stuff::MemoryStream *stream,
|
|
int version
|
|
);
|
|
MLRShadowLight(Stuff::Page *page);
|
|
~MLRShadowLight();
|
|
|
|
void
|
|
Save(Stuff::MemoryStream *stream);
|
|
void
|
|
Write(Stuff::Page *page);
|
|
|
|
virtual LightType
|
|
GetLightType()
|
|
{ Check_Object(this); return ShadowLight; }
|
|
|
|
virtual void
|
|
LightVertex(const MLRVertexData&)
|
|
{ Check_Object(this); }
|
|
virtual void
|
|
LightCenter(RGBAColor&)
|
|
{ Check_Object(this); }
|
|
|
|
void
|
|
SetLightMap(MLRLightMap *light_map);
|
|
|
|
// MSL 5.02 Shadow
|
|
MLRLightMap *
|
|
GetLightMap()
|
|
{ Check_Object(this); return showShadow ? lightMap : NULL; }
|
|
|
|
const MLRTexture*
|
|
GetShadowTexture()
|
|
{ Check_Object(this); return shadowTexture; }
|
|
|
|
void
|
|
SeeDetailShadow(bool b=true);
|
|
|
|
void
|
|
SetBlobDistance(Stuff::Scalar d)
|
|
{ Check_Object(this); blobDistance = d; }
|
|
|
|
Stuff::Scalar
|
|
GetBlobDistance()
|
|
{ Check_Object(this); return blobDistance; }
|
|
|
|
// MSL 5.02 Shadow
|
|
//
|
|
// Needed a way to clip out a shadow when it is out of range.
|
|
// Out of range is when it is past the fogend setting of the current mission.
|
|
//
|
|
void
|
|
ShowShadow(bool fShow)
|
|
{ Check_Object(this); showShadow = fShow;}
|
|
|
|
bool
|
|
GetShowShadow()
|
|
{ Check_Object(this); return showShadow;}
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Class Data Support
|
|
//
|
|
public:
|
|
static ClassData
|
|
*DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Testing
|
|
//
|
|
public:
|
|
void
|
|
TestInstance();
|
|
|
|
protected:
|
|
MLRLightMap
|
|
*lightMap;
|
|
|
|
MLRTexture
|
|
*shadowTexture;
|
|
|
|
unsigned
|
|
blobTextureHandle;
|
|
|
|
bool
|
|
detailShadow;
|
|
|
|
Stuff::Scalar
|
|
blobDistance;
|
|
// MSL 5.02 Shadow
|
|
bool
|
|
showShadow;
|
|
};
|
|
|
|
}
|