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>
160 lines
4.2 KiB
C++
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
|