Files
Cyd 2b8ca921cb 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.
2026-06-24 21:28:16 -05:00

176 lines
3.7 KiB
C++

#pragma once
#include "Proxies.hpp"
#include "ChildProxy.hpp"
namespace Proxies {
class PolygonMeshProxy;
class PolygonProxy;
class StateProxy;
class Process;
class GetInfoProcess;
//
//#########################################################################
//####################### GroupProxy ############################
//#########################################################################
//
class _declspec(novtable) GroupProxy:
public ChildProxy
{
public:
static void
InitializeClass();
static void
TerminateClass();
static ClassData
*DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Constructors
//
protected:
GroupProxy(
ClassData *class_data,
SceneProxy *scene,
GroupProxy *parent
);
~GroupProxy();
public:
//
// Copies the elements of a hierarchy into this hierarchy
//
virtual void
Copy(
CopyProcess *process,
GroupProxy *hierarchy
);
//
// gives informations about the group
//
virtual void
GetInfo(
GetInfoProcess *process
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Testing
//
public:
void
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Process support
//
public:
bool
BinSort(BinSortProcess *process);
void
BurnLights(BurnLightsProcess *process);
bool
CleanHierarchy(CleanHierarchyProcess *process);
int
FindErrors(FindErrorsProcess *process);
void
FindLights(BurnLightsProcess *process);
bool
FlattenHierarchy(FlattenHierarchyProcess *process);
bool
SplitByState(SplitByStateProcess *process);
bool
MakeSingleSided(MakeSingleSidedProcess *process);
bool
OptimizeFlatShading(OptimizeFlatShadingProcess *process);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Polygon functions
//
public:
void
GetCentroid(Stuff::Point3D *center);
void
Recenter();
void
SortAndAddPolygons(
BinSortProcess *process,
Stuff::DynamicArrayOf<PolygonProxy*> &polygons
);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Bounding functions
//
// GetBoundingSphere should be used only after GetOBB has returned a false
//
public:
bool
GetBoundingSphere(Stuff::Sphere *sphere);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Hierarchy functions
//
public:
//
// Gets the current number of children
//
virtual unsigned
GetChildCount() = 0;
//
// Child creation functions
//
virtual GroupProxy*
AppendNewGroupProxy() = 0;
virtual GroupProxy*
InsertNewGroupProxy(ChildProxy *before) = 0;
virtual PolygonMeshProxy*
AppendNewPolygonMeshProxy() = 0;
virtual PolygonMeshProxy*
InsertNewPolygonMeshProxy(ChildProxy *before) = 0;
ChildProxy*
AppendMatchingChildProxy(
CopyProcess *process,
ChildProxy *child
);
ChildProxy*
InsertMatchingChildProxy(
CopyProcess *process,
ChildProxy *child,
ChildProxy *before
);
//
// Child traversal functions
//
virtual ChildProxy*
UseFirstChildProxy() = 0;
virtual ChildProxy*
UseLastChildProxy() = 0;
virtual void
FindNamedChildren(
Stuff::DynamicArrayOf<ChildProxy*> *children,
const char* prefix,
bool matching = true
);
void
AttachChildProxy(ChildProxy *child)
{
Check_Object(this);
AttachReference(); activeChildProxies.Add(child);
}
void
DetachChildProxy(ChildProxy* proxy);
protected:
Stuff::ChainOf<ChildProxy*>
activeChildProxies;
};
}