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.
395 lines
7.8 KiB
C++
395 lines
7.8 KiB
C++
#pragma once
|
|
|
|
#include "MAXProxies.hpp"
|
|
|
|
namespace MAXProxies {
|
|
|
|
class MAXScene;
|
|
class MAXStateLibrary;
|
|
|
|
//
|
|
//#########################################################################
|
|
//########################### MAXState ###############################
|
|
//#########################################################################
|
|
//
|
|
class MAXState:
|
|
public Proxies::StateProxy
|
|
{
|
|
public:
|
|
static void
|
|
InitializeClass();
|
|
static void
|
|
TerminateClass();
|
|
|
|
static ClassData
|
|
*DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Constructors
|
|
//
|
|
public:
|
|
static MAXState*
|
|
MakeProxy(
|
|
MAXStateLibrary *library,
|
|
INode *mesh,
|
|
Mtl *material,
|
|
BitmapTex *texture,
|
|
int indice
|
|
)
|
|
{
|
|
return
|
|
new MAXState(
|
|
library,
|
|
mesh,
|
|
material,
|
|
texture,
|
|
indice
|
|
);
|
|
}
|
|
|
|
void
|
|
Destroy();
|
|
|
|
void*
|
|
operator new(size_t)
|
|
{return AllocatedMemory->New();}
|
|
void
|
|
operator delete(void *where)
|
|
{AllocatedMemory->Delete(where);}
|
|
|
|
protected:
|
|
MAXState(
|
|
MAXStateLibrary *library,
|
|
INode *mesh,
|
|
Mtl *material,
|
|
BitmapTex *texture,
|
|
int indice
|
|
);
|
|
~MAXState();
|
|
|
|
static Stuff::MemoryBlock
|
|
*AllocatedMemory;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Testing
|
|
//
|
|
public:
|
|
void
|
|
TestInstance() const;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// State management functions
|
|
//
|
|
public:
|
|
MAXStateLibrary*
|
|
GetStateLibrary()
|
|
{
|
|
Check_Object(this);
|
|
return Cast_Pointer(MAXStateLibrary*, libraryProxy);
|
|
}
|
|
|
|
#if 0 // was input to fix a bug in the lower level proxies that has since been
|
|
// solved "we think"
|
|
|
|
bool
|
|
IsEqualTo(Proxies::StateProxy *material);
|
|
|
|
bool
|
|
GetAlphaSetting(void);
|
|
#endif
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// State functions
|
|
//
|
|
public:
|
|
//
|
|
// name functions
|
|
//
|
|
bool
|
|
GetName(Stuff::MString *name);
|
|
void
|
|
SetName(const char* name);
|
|
|
|
//
|
|
// specular color functions
|
|
//
|
|
bool
|
|
GetSpecularColor(Stuff::RGBColor *color);
|
|
void
|
|
SetSpecularColor(const Stuff::RGBColor &color);
|
|
Stuff::Scalar
|
|
GetSpecularShininess();
|
|
void
|
|
SetSpecularShininess(Stuff::Scalar shininess);
|
|
|
|
//
|
|
// texture functions
|
|
//
|
|
Proxies::TextureProxy*
|
|
UseTextureProxy();
|
|
Proxies::TextureProxy*
|
|
SetToMatchTextureProxy(Proxies::TextureProxy *texture);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Render States
|
|
//
|
|
public:
|
|
bool
|
|
GetAlpha(Proxies::StateProxy::AlphaMode*);
|
|
void
|
|
SetAlpha(Proxies::StateProxy::AlphaMode);
|
|
bool
|
|
GetAlphaChildPermission();
|
|
void
|
|
SetAlphaChildPermission(bool override);
|
|
|
|
bool
|
|
GetFilter(FilterMode*);
|
|
void
|
|
SetFilter(FilterMode);
|
|
bool
|
|
GetFilterChildPermission();
|
|
void
|
|
SetFilterChildPermission(bool override);
|
|
|
|
bool
|
|
GetFog(FogMode*);
|
|
void
|
|
SetFog(FogMode);
|
|
bool
|
|
GetFogChildPermission();
|
|
void
|
|
SetFogChildPermission(bool override);
|
|
|
|
bool
|
|
GetDither(bool*);
|
|
void
|
|
SetDither(bool);
|
|
bool
|
|
GetDitherChildPermission();
|
|
void
|
|
SetDitherChildPermission(bool override);
|
|
|
|
bool
|
|
GetSpecular(bool*);
|
|
void
|
|
SetSpecular(bool);
|
|
bool
|
|
GetSpecularChildPermission();
|
|
void
|
|
SetSpecularChildPermission(bool override);
|
|
|
|
bool
|
|
GetTextureCorrection(bool*);
|
|
void
|
|
SetTextureCorrection(bool);
|
|
bool
|
|
GetTextureCorrectionChildPermission();
|
|
void
|
|
SetTextureCorrectionChildPermission(bool override);
|
|
|
|
bool
|
|
GetTextureWrap(TextureWrapMode*);
|
|
void
|
|
SetTextureWrap(TextureWrapMode);
|
|
bool
|
|
GetTextureWrapChildPermission();
|
|
void
|
|
SetTextureWrapChildPermission(bool override);
|
|
|
|
bool
|
|
GetWireFrame(WireFrameMode*);
|
|
void
|
|
SetWireFrame(WireFrameMode);
|
|
bool
|
|
GetWireFrameChildPermission();
|
|
void
|
|
SetWireFrameChildPermission(bool override);
|
|
|
|
bool
|
|
GetZBufferCompare(bool*);
|
|
void
|
|
SetZBufferCompare(bool);
|
|
bool
|
|
GetZBufferCompareChildPermission();
|
|
void
|
|
SetZBufferCompareChildPermission(bool override);
|
|
|
|
bool
|
|
GetZBufferWrite(bool*);
|
|
void
|
|
SetZBufferWrite(bool);
|
|
bool
|
|
GetZBufferWriteChildPermission();
|
|
void
|
|
SetZBufferWriteChildPermission(bool override);
|
|
|
|
bool
|
|
GetFlatColoring(bool*);
|
|
void
|
|
SetFlatColoring(bool);
|
|
bool
|
|
GetFlatColoringChildPermission();
|
|
void
|
|
SetFlatColoringChildPermission(bool override);
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Process state
|
|
//
|
|
bool
|
|
GetMatTwoSided(bool *onOff);
|
|
void
|
|
SetMatTwoSided(bool onOff);
|
|
bool
|
|
GetMatTwoSidedChildPermission();
|
|
void
|
|
SetMatTwoSidedChildPermission(bool override);
|
|
|
|
bool
|
|
GetBackface(bool *onOff);
|
|
void
|
|
SetBackface(bool onOff);
|
|
bool
|
|
GetBackfaceChildPermission();
|
|
void
|
|
SetBackfaceChildPermission(bool override);
|
|
|
|
|
|
bool
|
|
GetPriority(int*);
|
|
void
|
|
SetPriority(int);
|
|
bool
|
|
GetPriorityChildPermission();
|
|
void
|
|
SetPriorityChildPermission(bool override);
|
|
|
|
bool
|
|
GetLighting(int*);
|
|
void
|
|
SetLighting(int);
|
|
bool
|
|
GetLightingChildPermission();
|
|
void
|
|
SetLightingChildPermission(bool override);
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Helper functions
|
|
//
|
|
public:
|
|
Mtl*
|
|
GetMaterialState()
|
|
{return materialState;}
|
|
BitmapTex*
|
|
GetTextureState()
|
|
{return textureState;}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Implementation details
|
|
//
|
|
protected:
|
|
INode
|
|
*meshState;
|
|
Mtl *
|
|
materialState;
|
|
BitmapTex *
|
|
textureState;
|
|
int
|
|
mapIndice;
|
|
bool
|
|
bFlatShaded,
|
|
bAlphaMode;
|
|
public:
|
|
int matID;
|
|
int mipmapHint;
|
|
};
|
|
|
|
//
|
|
//#########################################################################
|
|
//###################### MAXStateLibrary ##########################
|
|
//#########################################################################
|
|
//
|
|
class MAXStateLibrary:
|
|
public Proxies::StateLibrary
|
|
{
|
|
public:
|
|
static void
|
|
InitializeClass();
|
|
static void
|
|
TerminateClass();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Constructors
|
|
//
|
|
protected:
|
|
MAXStateLibrary(MAXScene *scene);
|
|
~MAXStateLibrary();
|
|
|
|
public:
|
|
static MAXStateLibrary*
|
|
MakeProxy(MAXScene *scene)
|
|
{return new MAXStateLibrary(scene);}
|
|
void
|
|
Destroy();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Class Data Support
|
|
//
|
|
public:
|
|
static ClassData
|
|
*DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Testing
|
|
//
|
|
public:
|
|
void
|
|
TestInstance() const;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// State management functions
|
|
//
|
|
public:
|
|
MAXScene*
|
|
GetSceneProxy()
|
|
{Check_Object(this); return Cast_Pointer(MAXScene*, sceneProxy);}
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// State functions
|
|
//
|
|
public:
|
|
//
|
|
// Child creation functions
|
|
//
|
|
Proxies::StateProxy*
|
|
UseMatchingStateProxy(Proxies::StateProxy *state,Proxies::TextureProxy *texture);
|
|
void
|
|
CalculateMaxState(
|
|
MAXState *state,
|
|
Proxies::StateProxy *proxy,
|
|
Proxies::TextureProxy *texture
|
|
);
|
|
MultiMtl *GetMultiMtl();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Openflight helper functions
|
|
//
|
|
public:
|
|
MAXState*
|
|
UseStateProxy(
|
|
Mtl *material,
|
|
BitmapTex *texture,
|
|
INode* mesh,
|
|
int indice
|
|
);
|
|
|
|
void
|
|
CloseLibrary();
|
|
|
|
protected:
|
|
MultiMtl *multiMtl;
|
|
};
|
|
}
|