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

133 lines
3.6 KiB
C++

//===========================================================================//
// File: renderer.hpp //
// Project: MUNGA Brick: Renderer Manager //
// Contents: Interface specification Renderer and Renderer Manager //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 11/21/94 ECH Initial coding. //
// 01/22/95 ECH Added NotifyOfBecomingUninterestingEntity //
// 05/25/95 CPB Moved GetLinkedEntity into public accessability for gauges //
//---------------------------------------------------------------------------//
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#pragma once
#include "Adept.hpp"
#include "VideoRenderer.hpp"
namespace Adept {
class Entity;
//##########################################################################
//######################## RendererManager ###########################
//##########################################################################
//-------------------------------------------------------------------------
// The following helper classes must always be typedef'd or overriden by an
// inheritor
//
typedef Receiver__ClassData RendererManager__ClassData;
typedef Receiver__Message RendererManager__Message;
//----------------- End of helper stuff -----------------
class RendererManager:
public Receiver
{
friend class Renderer;
public:
static void
InitializeClass();
static void
TerminateClass();
//##########################################################################
// Inheritance support
//
public:
typedef RendererManager__ClassData ClassData;
typedef RendererManager__Message Message;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction, Destruction. Testing
//
public:
RendererManager():
Receiver(DefaultData),
adoptedRenderers(NULL, true)
{}
void
TestInstance();
static RendererManager
*Instance;
//##########################################################################
// Class Data support
//
public:
static ClassData
*DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Renderer Creation
//
public:
enum {
ReservedForGameModelRendererType,
VideoRendererType,
AudioRendererType,
RendererTypeCount
};
virtual int
GetModelListSize()
{return RendererTypeCount;}
void
AdoptRenderer(Renderer *renderer);
Renderer*
FindRenderer(int renderer_type)
{return adoptedRenderers.Find(renderer_type);}
virtual int
FindRendererType(const char *renderer_name);
protected:
Stuff::SortedChainOf<Renderer*, int>
adoptedRenderers;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Renderer Execution
//
public:
void
EntityIsInteresting(
Entity *entity,
bool render_me
);
void
EntityIsUninteresting(Entity *entity);
void
Execute(Stuff::Time target_render_time);
void
ActivateRenderers();
void
DeactivateRenderers();
};
}