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.
148 lines
3.3 KiB
C++
148 lines
3.3 KiB
C++
#pragma once
|
|
|
|
#include "ElementProxies.hpp"
|
|
|
|
namespace ElementProxies {
|
|
|
|
class ElementGroupProxy;
|
|
|
|
class ApplyDetailTexturesProcess;
|
|
|
|
//
|
|
//#########################################################################
|
|
//##################### ElementSceneProxy ###########################
|
|
//#########################################################################
|
|
//
|
|
class ElementSceneProxy:
|
|
public Proxies::SceneProxy
|
|
{
|
|
public:
|
|
static void
|
|
InitializeClass();
|
|
static void
|
|
TerminateClass();
|
|
static ClassData
|
|
*DefaultData;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Constructors
|
|
//
|
|
static ElementSceneProxy*
|
|
MakeProxy(
|
|
ElementRenderer::GroupElement *group,
|
|
const char* texture_path
|
|
)
|
|
{return new ElementSceneProxy(group, texture_path);}
|
|
|
|
static ElementSceneProxy*
|
|
MakeProxy(ElementRenderer::GroupElement *group)
|
|
{return new ElementSceneProxy(group);}
|
|
|
|
void
|
|
Destroy();
|
|
|
|
protected:
|
|
ElementSceneProxy(
|
|
ElementRenderer::GroupElement *group,
|
|
const char* texture_path
|
|
);
|
|
ElementSceneProxy(ElementRenderer::GroupElement *group);
|
|
~ElementSceneProxy();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Process support
|
|
//
|
|
public:
|
|
virtual void
|
|
ApplyDetailTextures(ApplyDetailTexturesProcess *process);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Testing
|
|
//
|
|
public:
|
|
void
|
|
TestInstance() const;
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Library functions
|
|
//
|
|
public:
|
|
Proxies::StateLibrary*
|
|
GetStateLibrary();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Bounding functions
|
|
//
|
|
// GetBoundingSphere should be used only after GetOBB has returned a false
|
|
//
|
|
public:
|
|
void
|
|
GetCentroid(Stuff::Point3D *center);
|
|
bool
|
|
GetOBB(Stuff::OBB *obb);
|
|
void
|
|
SetOBB(const Stuff::OBB &obb);
|
|
bool
|
|
GetBoundingSphere(Stuff::Sphere *sphere);
|
|
void
|
|
SetBoundingSphere(const Stuff::Sphere &sphere);
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Scene functions
|
|
//
|
|
public:
|
|
//
|
|
// name functions
|
|
//
|
|
bool
|
|
GetName(Stuff::MString *name);
|
|
void
|
|
SetName(const char* name);
|
|
|
|
//
|
|
// Gets the current number of children
|
|
//
|
|
unsigned
|
|
GetChildCount();
|
|
|
|
//
|
|
// Polygon mesh child creation functions
|
|
//
|
|
Proxies::GroupProxy*
|
|
AppendNewGroupProxy();
|
|
Proxies::GroupProxy*
|
|
InsertNewGroupProxy(Proxies::ChildProxy *before);
|
|
|
|
Proxies::PolygonMeshProxy*
|
|
AppendNewPolygonMeshProxy();
|
|
Proxies::PolygonMeshProxy*
|
|
InsertNewPolygonMeshProxy(Proxies::ChildProxy *before);
|
|
//
|
|
// Child traversal functions
|
|
//
|
|
Proxies::ChildProxy*
|
|
UseFirstChildProxy();
|
|
Proxies::ChildProxy*
|
|
UseLastChildProxy();
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
// Local implementation details
|
|
//
|
|
public:
|
|
ElementRenderer::GroupElement*
|
|
GetProxiedScene()
|
|
{Check_Object(this); return proxiedScene;}
|
|
|
|
Proxies::ChildProxy*
|
|
InterpretElement(
|
|
Proxies::GroupProxy *parent,
|
|
Stuff::ChainIterator *iterator
|
|
);
|
|
|
|
protected:
|
|
ElementRenderer::GroupElement
|
|
*proxiedScene;
|
|
};
|
|
|
|
}
|