Files
CydandClaude Fable 5 fdd9ac9d97 Initial import: Tesla Release 4.10 (Tesla:BattleTech & Tesla:Red Planet)
Archival snapshot of the Virtual World Entertainment Tesla cockpit
software, 1994-1996: MUNGA engine and L4 pod layer source (Borland
C++ 5.0), BT/RP game code, and game content (models, audio, maps,
gauges, Division renderer data). Includes third-party libraries:
Division dVS/DPL graphics, HMI SOS audio, WATTCP networking.

Files are preserved byte-for-byte (.gitattributes disables all
line-ending conversion). README.md documents the layout, target
hardware, and toolchain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 13:21:58 -05:00

160 lines
4.2 KiB
C++

//===========================================================================//
// File: cammgr.hh //
// Project: Munga //
// Contents: Camera Interface //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 08/08/95 JM Initial coding. //
// Classes: CameraInstanceManager //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#if !defined(CAMMGR_HPP)
# define CAMMGR_HPP
# if !defined(RESOURCE_HPP)
# include <resource.hpp>
# endif
# if !defined(SCHAIN_HPP)
# include <schain.hpp>
# endif
# if !defined(CAMINST_HPP)
# include <caminst.hpp>
# endif
//##########################################################################
//##################### CameraInstanceManager #######################
//##########################################################################
class CameraInstanceManager SIGNATURED
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// local member data
//
protected:
//
// cameraList is a circular Linked list
// which holds cameraInstances
//
SChainOf<CameraInstance*> cameraList;
//
// CameraIterator holds the current position in the
// camera list for the lifetime of the class
// & == NULL if the list is empty
//
SChainIteratorOf<CameraInstance*> *cameraIterator;
int
FindUniqueCameraID();
char
cameraFilename[128];
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Public Member Manipulation Functions
//
public:
//
// CameraList Manipulator Functions
//
void
SetCamera(
const Origin &new_origin,
CameraInstance *camera_instance = NULL
);
CameraInstance*
CreateCameraInstance(const Origin &new_origin);
CameraInstance*
AddCameraInstance(CameraInstance *camera_instance);
CameraInstance*
DeleteCameraInstance();
void
DeleteCameraList();
//
// Iterator Manipulator Functions (Circular Chain)
//
CameraInstance*
IncrementIterator();
CameraInstance*
DecrementIterator();
CameraInstance*
AdvanceIterator(const CameraInstance &camera_instance);
CameraInstance*
GetCurrent() const
{Check(this); return cameraIterator->GetCurrent();}
CameraInstance*
First()
{
Check(this);
Check(cameraIterator->GetCurrent());
cameraIterator->First();
return GetCurrent();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// CameraList Searching and Query Functions
//
public:
CameraInstance*
FindClosestCamera(const Point3D &point_3D);
CameraInstance*
FindClosestCameraShowing(const Point3D *points);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Test Class Support
//
public:
Logical
TestInstance() const;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Construction and Destruction Support
//
public:
CameraInstanceManager();
~CameraInstanceManager();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Tool Support
//
protected:
void
InitializeCameraInstances();
public:
void
ReadNotationFile();
void
CreateStreamedCameraInstances(
ResourceFile *res_file,
const char *map_name
);
void
WriteNotationFile();
static ResourceDescription::ResourceID
CreateCameraInstancesStream(
ResourceFile *resource_file,
const char *camera_name,
const ResourceDirectories *directories
);
};
#endif