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>
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
# Archival repository: preserve all files byte-for-byte.
|
||||
# No line-ending conversion, no diff/merge text munging.
|
||||
* -text
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,58 @@
|
||||
@echo off
|
||||
echo **************************************************************
|
||||
echo * first argument is "a" to build an all new archive or *
|
||||
echo * "f" to freshen an existing one. Second argument is the *
|
||||
echo * directory to place the archive (default is root) The files *
|
||||
echo * to be archived are located in "arcfiles.lst" which MUST *
|
||||
echo * also be on your disk or this won't work. GAC 6/23/95 *
|
||||
echo **************************************************************
|
||||
|
||||
set a3=arcfiles.lst
|
||||
set s1=exclude.lst
|
||||
if not "%3"=="" set a3=%3
|
||||
if not exist %a3% goto NOLISTFILE
|
||||
if not exist %s1% goto NOEXCLUDEFILE
|
||||
|
||||
if "%1"=="a" goto BUILD
|
||||
|
||||
if "%1"=="f" goto FRESHEN
|
||||
|
||||
goto USAGE
|
||||
|
||||
:BUILD
|
||||
echo on
|
||||
pkzip -a -P -eX -x@%s1% %2\bt.zip @%a3%
|
||||
@echo off
|
||||
goto END
|
||||
|
||||
:FRESHEN
|
||||
echo on
|
||||
pkzip -u -P -eX -x@%s1% %2\bt.zip @%a3%
|
||||
@echo off
|
||||
goto END
|
||||
|
||||
:NOLISTFILE
|
||||
echo.
|
||||
echo Listfile '%a3%' not in current directory.
|
||||
echo.
|
||||
goto END
|
||||
|
||||
:NOEXCLUDEFILE
|
||||
echo.
|
||||
echo Excludefile '%s1%' not in current directory.
|
||||
echo.
|
||||
goto END
|
||||
|
||||
:USAGE
|
||||
echo.
|
||||
echo usage: arcbt mode [[drive] listfile]
|
||||
echo mode a build archive from scratch
|
||||
echo f freshen existing archive
|
||||
echo drive for archive file
|
||||
echo listfile specifies what files to store in archive
|
||||
echo.
|
||||
goto END
|
||||
|
||||
:END
|
||||
set s1=
|
||||
set a3=
|
||||
@@ -0,0 +1,41 @@
|
||||
btl4tool.exe
|
||||
readme.txt
|
||||
btdpl.ini
|
||||
btl4opt.exe
|
||||
btl4d0.exe
|
||||
btl4d2s.exe
|
||||
btl4d3s.exe
|
||||
btl4.res
|
||||
netnub.exe
|
||||
setenv.bat
|
||||
dpmi32vm.ovl
|
||||
32*.exe
|
||||
l4gauge.ini
|
||||
vr*.*
|
||||
*.386
|
||||
test.egg
|
||||
video\*.*
|
||||
video\mat\*.*
|
||||
video\mat\arena\*.*
|
||||
video\mat\polar\*.*
|
||||
video\mat\morning\*.*
|
||||
video\mat\day\*.*
|
||||
video\mat\evening\*.*
|
||||
video\mat\night\*.*
|
||||
video\geo\*.*
|
||||
video\geo\arena\*.*
|
||||
video\geo\polar\*.*
|
||||
video\geo\morning\*.*
|
||||
video\geo\day\*.*
|
||||
video\geo\evening\*.*
|
||||
video\geo\night\*.*
|
||||
video\tex\*.*
|
||||
gauge\*.cfg
|
||||
gauge\*.ini
|
||||
gauge\*.pc?
|
||||
gauge\*.gim
|
||||
gauge\*.gat
|
||||
audio\*.cfg
|
||||
audio\*.ini
|
||||
audio\*.res
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#include "testbt.hpp"
|
||||
|
||||
//#############################################################################
|
||||
// Test Class -- AmmoBin
|
||||
//
|
||||
Logical AmmoBin::TestClass(Mech &)
|
||||
{
|
||||
return True;
|
||||
|
||||
}
|
||||
|
||||
void AmmoBin::ResetToInitialState()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#if !defined(BT_HPP)
|
||||
# define BT_HPP
|
||||
|
||||
# if !defined(MUNGA_HPP)
|
||||
# include <munga.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(NO_PRECOMPILED_HEADERS)
|
||||
|
||||
# if !defined(MECH_HPP)
|
||||
# include <mech.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(BTPLAYER_HPP)
|
||||
# include <btplayer.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(MECHSUB_HPP)
|
||||
# include <mechsub.hpp>
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,112 @@
|
||||
.autodepend
|
||||
.cacheautodepend
|
||||
.suffixes: .cpp
|
||||
|
||||
!ifndef BTYPE
|
||||
!error BTYPE macro not supplied
|
||||
!endif
|
||||
|
||||
!ifndef BPATH
|
||||
!error BPATH macro not supplied
|
||||
!endif
|
||||
|
||||
!include make.cfg
|
||||
!include $(BPATH)
|
||||
|
||||
!ifndef BT_ROOT
|
||||
!error BT_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
TARGET_DIR = $(BT_ROOT)\$(BTYPE)
|
||||
TARGET_PATH = $(TARGET_DIR)\\
|
||||
.path.obj = $(TARGET_DIR)
|
||||
.path.lib = $(LIBRARY_PATH)
|
||||
|
||||
LIB_PREFIX = -+$(TARGET_DIR)\\
|
||||
|
||||
CFG_FILE = $(TARGET_DIR)\$(BTYPE).cfg
|
||||
HEADER_FILE = bt$(BTYPE).csm
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Library targets
|
||||
#
|
||||
all: $(CFG_FILE) $(TARGET_DIR)\bt.lib
|
||||
|
||||
clean:
|
||||
del $(TARGET_DIR)\*.obj
|
||||
del $(TARGET_DIR)\*.lib
|
||||
del $(TARGET_DIR)\*.bak
|
||||
del $(TARGET_DIR)\*.cfg
|
||||
|
||||
assemble:
|
||||
@echo No assembly targets
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
#
|
||||
!include $(BTYPE).mak
|
||||
|
||||
!ifndef STARTUP_OBJ
|
||||
!error STARTUP_OBJ macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef STARTUP_LIBS
|
||||
!error STARTUP_LIBS macro is not defined
|
||||
!endif
|
||||
|
||||
{$(INCLUDE_PATH)}.cpp{$(TARGET_DIR)}.obj:
|
||||
$(BCC) @$(CFG_FILE) $< >>error.log
|
||||
|
||||
{$(INCLUDE_PATH)}.c{$(TARGET_DIR)}.obj:
|
||||
$(BCC) @$(CFG_FILE) $< >>error.log
|
||||
|
||||
{$(BT_ROOT)}.asm{$(TARGET_DIR)}.obj:
|
||||
tasm32 -ml $(TASM_OPTIONS) -i$(BT_ROOT) $<,$@ >>error.log
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Battletech library
|
||||
#
|
||||
BT_OBJS = \
|
||||
?btmssn.obj \
|
||||
?messmgr.obj \
|
||||
?mechdmg.obj \
|
||||
?dmgtable.obj \
|
||||
?mech.obj \
|
||||
?mech2.obj \
|
||||
?mech3.obj \
|
||||
?mech4.obj \
|
||||
?mechsub.obj \
|
||||
?mechtech.obj \
|
||||
?heat.obj \
|
||||
?mechmppr.obj \
|
||||
?powersub.obj \
|
||||
?sensor.obj \
|
||||
?gnrator.obj \
|
||||
?gyro.obj \
|
||||
?torso.obj \
|
||||
?hud.obj \
|
||||
?myomers.obj \
|
||||
?mechweap.obj \
|
||||
?emitter.obj \
|
||||
?ppc.obj \
|
||||
?projweap.obj \
|
||||
?mislanch.obj \
|
||||
?ammobin.obj \
|
||||
?gauss.obj \
|
||||
?projtile.obj \
|
||||
?misthrst.obj \
|
||||
?seeker.obj \
|
||||
?missile.obj \
|
||||
?btplayer.obj \
|
||||
?btteam.obj \
|
||||
?btdirect.obj \
|
||||
?btreg.obj \
|
||||
?btcnsl.obj \
|
||||
?bttool.obj
|
||||
|
||||
$(BT_OBJS:?=): $(CFG_FILE)
|
||||
|
||||
$(TARGET_DIR)\bt.lib: $(BT_OBJS:?=) $(BT_ROOT)\bt.mak
|
||||
tlib $@ $(LIB_OPTIONS) @&&|
|
||||
$(BT_OBJS:?=$(LIB_PREFIX))
|
||||
| >>error.log
|
||||
@@ -0,0 +1,107 @@
|
||||
//===========================================================================//
|
||||
// File: cnslmsgs.cpp //
|
||||
// Project: MUNGA Brick: //
|
||||
// Contents: Console messages //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- -----------------------------------------------------------//
|
||||
// 06/02/95 ECH Initial coding. //
|
||||
// 06/03/95 GAH Added corresponding Macintosh message defintions. //
|
||||
// 10/05/95 GAH Added ConsoleApplicationEndMissionMessage. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTCNSL_HPP)
|
||||
# include <btcnsl.hpp>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~ ConsolePlayerMechKilledMessage ~~~~~~~~~~~~~~~~~~~~~~
|
||||
ConsolePlayerMechKilledMessage::
|
||||
ConsolePlayerMechKilledMessage(
|
||||
HostID player_host_ID,
|
||||
HostID killer_host_ID
|
||||
):
|
||||
NetworkClient::Message(
|
||||
ConsolePlayerMechKilledMessageID,
|
||||
sizeof(ConsolePlayerMechKilledMessage)
|
||||
)
|
||||
{
|
||||
playerHostID = player_host_ID;
|
||||
killerHostID = killer_host_ID;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~ ConsolePlayerMechScoreUpdateMessage ~~~~~~~~~~~~~~~~~~~~~~
|
||||
ConsolePlayerMechScoreUpdateMessage::
|
||||
ConsolePlayerMechScoreUpdateMessage(
|
||||
HostID player_host_ID,
|
||||
int score
|
||||
):
|
||||
NetworkClient::Message(
|
||||
ConsolePlayerMechScoreUpdateMessageID,
|
||||
sizeof(ConsolePlayerMechScoreUpdateMessage)
|
||||
)
|
||||
{
|
||||
playerHostID = player_host_ID;
|
||||
playerScore = score;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~ ConsoleBTTeamScoreUpdateMessage ~~~~~~~~~~~~~~~~~~~~~~
|
||||
ConsoleBTTeamScoreUpdateMessage::
|
||||
ConsoleBTTeamScoreUpdateMessage(
|
||||
int team_ID,
|
||||
int score
|
||||
):
|
||||
NetworkClient::Message(
|
||||
ConsoleBTTeamScoreUpdateMessageID,
|
||||
sizeof(ConsoleBTTeamScoreUpdateMessage)
|
||||
)
|
||||
{
|
||||
teamID = team_ID;
|
||||
teamScore = score;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~ ConsolePlayerMechDamagedMessage ~~~~~~~~~~~~~~~~~~~~~~
|
||||
ConsolePlayerMechDamagedMessage::
|
||||
ConsolePlayerMechDamagedMessage(
|
||||
HostID player_host_ID,
|
||||
HostID damager_host_ID,
|
||||
int loss,
|
||||
int damage_zone_index,
|
||||
Logical damage_zone_destroyed,
|
||||
int points_transfered,
|
||||
int weapon_index
|
||||
):
|
||||
NetworkClient::Message(
|
||||
ConsolePlayerMechDamagedMessageID,
|
||||
sizeof(ConsolePlayerMechDamagedMessage)
|
||||
)
|
||||
{
|
||||
playerHostID = player_host_ID;
|
||||
damagerHostID = damager_host_ID;
|
||||
damageLoss = loss;
|
||||
pointsTransfered = points_transfered;
|
||||
damageZoneIndex = damage_zone_index;
|
||||
damageZoneDestroyed = damage_zone_destroyed;
|
||||
weaponIndex = weapon_index;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~ ConsolePlayerMechDeathWithoutHonorMessage ~~~~~~~~~~~~~~~~~~~
|
||||
ConsolePlayerMechDeathWithoutHonorMessage::
|
||||
ConsolePlayerMechDeathWithoutHonorMessage(
|
||||
HostID player_host_ID
|
||||
):
|
||||
NetworkClient::Message(
|
||||
ConsolePlayerMechDeathWithoutHonorMessageID,
|
||||
sizeof(ConsolePlayerMechDeathWithoutHonorMessage)
|
||||
)
|
||||
{
|
||||
playerHostID = player_host_ID;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
@@ -0,0 +1,76 @@
|
||||
//===========================================================================//
|
||||
// File: btdirect.hh //
|
||||
// Project: Red Planet //
|
||||
// Contents: Chooses from a Selection of Camerea's and provides information //
|
||||
// to any number of cameraship's as to which player to follow //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/15/95 JM Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined (BTDIRECT_HPP)
|
||||
# define BTDIRECT_HPP
|
||||
|
||||
# if !defined (DIRECTOR_HPP)
|
||||
# include <director.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined (BTPLAYER_HPP) && 0
|
||||
# include <btplayer.hpp>
|
||||
# endif
|
||||
|
||||
|
||||
class BTCameraDirector :
|
||||
public CameraDirector
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data support
|
||||
//
|
||||
public:
|
||||
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Simulation Support
|
||||
//
|
||||
public:
|
||||
|
||||
typedef void
|
||||
(BTCameraDirector::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
void
|
||||
CreateBTCameraShip(Scalar);
|
||||
|
||||
void
|
||||
BeABTDirector(Scalar);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction Support
|
||||
//
|
||||
BTCameraDirector(
|
||||
MakeMessage *creation_message,
|
||||
SharedData &virtual_data = DefaultData
|
||||
);
|
||||
|
||||
static BTCameraDirector*
|
||||
BTCameraDirector::Make(CameraDirector::MakeMessage *creation_message);
|
||||
|
||||
~BTCameraDirector();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,70 @@
|
||||
//===========================================================================//
|
||||
// File: btmssn.cpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: Implementation Details for missions //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 04/07/95 ECH Initial coding. //
|
||||
// 09/12/95 JM added scenario //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTMSSN_HPP)
|
||||
# include <btmssn.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(NOTATION_HPP)
|
||||
# include <notation.hpp>
|
||||
#endif
|
||||
|
||||
//##########################################################################
|
||||
//########################### BTMission ################################
|
||||
//##########################################################################
|
||||
|
||||
BTMission::BTMission(
|
||||
NotationFile *notation_file,
|
||||
ResourceFile *resource_file
|
||||
):
|
||||
Mission(notation_file, resource_file)
|
||||
{
|
||||
Check(notation_file);
|
||||
Check(resource_file);
|
||||
|
||||
//
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Load Up Default Values
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
|
||||
experienceLevel = BTMission::NoviceMode;
|
||||
advancedDamageOn = False;
|
||||
|
||||
int ret;
|
||||
ret = notation_file->GetEntry("mission", "temperature", &missionTemperature);
|
||||
if (!ret)
|
||||
{
|
||||
DEBUG_STREAM << "ERROR: no temperature in egg!\n";
|
||||
Exit(AbortExitCodeID);
|
||||
}
|
||||
missionTemperature += 273.15f; // Celsius to Kelvin conversion
|
||||
|
||||
}
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
BTMission::~BTMission()
|
||||
{
|
||||
|
||||
}
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
BTMission::SetPlayerData(NotationFile*)
|
||||
{
|
||||
Fail("Should never reach BTMission::SetPlayerData() \n");
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
//===========================================================================//
|
||||
// File: btmssn.hpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: Implementation Details for missions //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 04/07/95 ECH Initial coding. //
|
||||
// 09/12/95 JM added scenario //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTMSSN_HPP)
|
||||
# define BTMSSN_HPP
|
||||
|
||||
# if !defined(MISSION_HPP)
|
||||
# include <mission.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//########################### BTMission ################################
|
||||
//##########################################################################
|
||||
|
||||
|
||||
class BTMission :
|
||||
public Mission
|
||||
{
|
||||
|
||||
public:
|
||||
enum {
|
||||
NoviceMode = 0,
|
||||
StandardMode,
|
||||
VeteranMode,
|
||||
ExpertMode,
|
||||
ExperienceLevelModeCount
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
Enumeration experienceLevel;
|
||||
|
||||
CString
|
||||
roleName;
|
||||
CString
|
||||
teamName;
|
||||
|
||||
Logical
|
||||
advancedDamageOn;
|
||||
|
||||
Scalar
|
||||
missionTemperature;
|
||||
|
||||
CString
|
||||
patchName;
|
||||
|
||||
public:
|
||||
|
||||
BTMission(
|
||||
NotationFile *notation_file,
|
||||
ResourceFile *resources
|
||||
);
|
||||
|
||||
~BTMission();
|
||||
|
||||
void
|
||||
SetPlayerData(NotationFile *notation_file);
|
||||
|
||||
CString
|
||||
GetRoleName() const
|
||||
{ Check(this); return roleName; }
|
||||
|
||||
CString
|
||||
GetTeamName() const
|
||||
{ Check(this); return teamName; }
|
||||
|
||||
const CString
|
||||
GetPatchName()
|
||||
{Check(this); return patchName;}
|
||||
|
||||
const Scalar
|
||||
GetMissionTemperature()
|
||||
{Check(this); return missionTemperature;}
|
||||
|
||||
const Enumeration
|
||||
ExperienceLevel()
|
||||
{Check(this); return experienceLevel;}
|
||||
|
||||
const Logical
|
||||
AdvancedDamageOn()
|
||||
{Check(this); return advancedDamageOn;}
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,162 @@
|
||||
//===========================================================================//
|
||||
// File: btreg.cc //
|
||||
// Project: MUNGA Brick: Registry Manager //
|
||||
// Contents: Interface specification for Registry Manager //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/22/94 ECH Initial coding. //
|
||||
// 11/29/94 JMA Changed Identities to IDs //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTREG_HPP)
|
||||
# include <btreg.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTPLAYER_HPP)
|
||||
# include <btplayer.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTDIRECT_HPP)
|
||||
# include <btdirect.hpp>
|
||||
#endif
|
||||
|
||||
//
|
||||
// Registered classes...
|
||||
//
|
||||
#if !defined(MECH_HPP)
|
||||
# include <mech.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(PROJTILE_HPP)
|
||||
# include <projtile.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(MISSILE_HPP)
|
||||
# include <missile.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTTEAM_HPP)
|
||||
# include <btteam.hpp>
|
||||
#endif
|
||||
|
||||
//
|
||||
//~~~~~~~~~~~~~~~~
|
||||
// Munga Includes
|
||||
//~~~~~~~~~~~~~~~~
|
||||
//
|
||||
#if !defined(BTMSSN_HPP)
|
||||
# include <btmssn.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(DIRECTOR_HPP)
|
||||
# include <director.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(HOSTMGR_HPP)
|
||||
# include <hostmgr.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(APP_HPP)
|
||||
# include <app.hpp>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Registry ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// Registry
|
||||
//#############################################################################
|
||||
//
|
||||
BTRegistry::BTRegistry(ResourceFile *)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// ~Registry
|
||||
//#############################################################################
|
||||
//
|
||||
BTRegistry::~BTRegistry()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// GetStaticData
|
||||
//#############################################################################
|
||||
//
|
||||
Entity::SharedData*
|
||||
BTRegistry::GetStaticData(ClassID class_ID)
|
||||
{
|
||||
switch (class_ID)
|
||||
{
|
||||
case MechClassID:
|
||||
return &Mech::DefaultData;
|
||||
case ProjectileClassID:
|
||||
return &Projectile::DefaultData;
|
||||
case MissileClassID:
|
||||
return &Missile::DefaultData;
|
||||
case BTPlayerClassID:
|
||||
return &BTPlayer::DefaultData;
|
||||
case BTTeamClassID:
|
||||
return &BTTeam::DefaultData;
|
||||
default:
|
||||
return Registry::GetStaticData(class_ID);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// GetStaticData
|
||||
//#############################################################################
|
||||
//
|
||||
Player*
|
||||
BTRegistry::MakePlayer(Mission *mission)
|
||||
{
|
||||
Check(this);
|
||||
Check(mission);
|
||||
BTMission *bt_mission = Cast_Object(BTMission *, mission);
|
||||
|
||||
if (strcmp(mission->GetGameModel(), "camera"))
|
||||
{
|
||||
BTPlayer::MakeMessage
|
||||
make_player(
|
||||
BTPlayer::MakeMessageID,
|
||||
sizeof(BTPlayer::MakeMessage),
|
||||
BTPlayerClassID,
|
||||
EntityID::Null,
|
||||
ResourceDescription::NullResourceID,
|
||||
BTPlayer::DefaultFlags,
|
||||
Origin::Identity,
|
||||
mission->GetPlayerBitmapIndex(),
|
||||
bt_mission->GetRoleName(),
|
||||
bt_mission->GetTeamName()
|
||||
);
|
||||
return new BTPlayer(&make_player);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
BTCameraDirector::MakeMessage create_director(
|
||||
BTCameraDirector::MakeMessageID,
|
||||
sizeof(BTCameraDirector::MakeMessage),
|
||||
CameraDirectorClassID,
|
||||
EntityID::Null,
|
||||
ResourceDescription::NullResourceID,
|
||||
BTCameraDirector::DefaultFlags,
|
||||
Origin::Identity,
|
||||
mission->GetPlayerBitmapIndex()
|
||||
);
|
||||
return new BTCameraDirector(&create_director);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
//===========================================================================//
|
||||
// File: registry.hh //
|
||||
// Project: MUNGA Brick: Registry Manager //
|
||||
// Contents: Interface specification for Registry Manager //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/22/94 ECH Initial coding. //
|
||||
// 11/29/94 JMA Changed Identities to IDs //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTREG_HPP)
|
||||
# define BTREG_HPP
|
||||
|
||||
# if !defined(REGISTRY_HPP)
|
||||
# include <registry.hpp>
|
||||
# endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Registry ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
// Registry
|
||||
//
|
||||
// Provides construction methods for entities.
|
||||
// Provides access to a classes static data.
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
|
||||
class BTRegistry:
|
||||
public Registry
|
||||
{
|
||||
public:
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
// Public interface
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
// Construction, Destruction, and testing
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
BTRegistry(ResourceFile *);
|
||||
~BTRegistry();
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------
|
||||
// GetStaticData
|
||||
//
|
||||
// Provides an interface by which the static data for a class
|
||||
// may be accessed.
|
||||
//--------------------------------------------------------------
|
||||
//
|
||||
Entity__SharedData*
|
||||
GetStaticData(ClassID entity_class);
|
||||
|
||||
//
|
||||
//-------------------------
|
||||
// Create the player object
|
||||
//-------------------------
|
||||
//
|
||||
Player*
|
||||
MakePlayer(Mission *mission);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,22 @@
|
||||
//===========================================================================//
|
||||
// File: btscnrl.cpp //
|
||||
// Project: MUNGA //
|
||||
// Contents: BT Scenario Role Specific Data //
|
||||
//------------------- -------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/06/96 GDU Initial coding //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1996, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
|
||||
# if !defined(BTSCNRL_HPP)
|
||||
# include <btscnrl.hpp>
|
||||
# endif
|
||||
@@ -0,0 +1,152 @@
|
||||
//===========================================================================//
|
||||
// File: btteam.cpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: BattleTech Team Specifications //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/11/96 JM initial coding //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTTEAM_HPP)
|
||||
# include <btteam.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(HOSTMGR_HPP)
|
||||
# include <hostmgr.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(APP_HPP)
|
||||
# include <app.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTCNSL_HPP)
|
||||
# include <btcnsl.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
//############################### BTTeam ###############################
|
||||
//#############################################################################
|
||||
|
||||
//#############################################################################
|
||||
// Shared Data Support
|
||||
//
|
||||
Derivation
|
||||
BTTeam::ClassDerivations(Team::ClassDerivations,"BTTeam");
|
||||
|
||||
BTTeam::SharedData
|
||||
BTTeam::DefaultData(
|
||||
BTTeam::ClassDerivations,
|
||||
BTTeam::MessageHandlers,
|
||||
BTTeam::AttributeIndex,
|
||||
BTTeam::StateCount,
|
||||
(BTTeam::MakeHandler)BTTeam::Make
|
||||
);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
BTTeam::TeamSimulation(
|
||||
Scalar // time_slice
|
||||
)
|
||||
{
|
||||
Check(this);
|
||||
//
|
||||
//------------------------------------------------------------------------
|
||||
// Update the console every 15 seconds
|
||||
//------------------------------------------------------------------------
|
||||
//
|
||||
if (lastPerformance - lastConsoleUpdate >= 15.0f)
|
||||
{
|
||||
lastConsoleUpdate = lastPerformance;
|
||||
|
||||
//
|
||||
//---------------------------------------------
|
||||
// Tell the console (if there is one) our score
|
||||
//---------------------------------------------
|
||||
//
|
||||
Check(application);
|
||||
HostManager *host_manager = application->GetHostManager();
|
||||
Check(host_manager);
|
||||
Host *console_host = host_manager->GetConsoleHost();
|
||||
if (console_host)
|
||||
{
|
||||
Check(console_host);
|
||||
|
||||
ConsoleBTTeamScoreUpdateMessage
|
||||
score_message(ownerID, (int)teamScore);
|
||||
|
||||
application->SendMessage(
|
||||
console_host->GetHostID(),
|
||||
NetworkClient::ConsoleClientID,
|
||||
&score_message
|
||||
);
|
||||
}
|
||||
}
|
||||
Check_Fpu();
|
||||
}
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
BTTeam::BTTeam(
|
||||
MakeMessage *creation_message,
|
||||
SharedData &shared_data
|
||||
) :
|
||||
Team (creation_message, shared_data)
|
||||
{
|
||||
lastConsoleUpdate = lastPerformance;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
BTTeam::~BTTeam()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
BTTeam*
|
||||
BTTeam::Make(MakeMessage *creation_message)
|
||||
{
|
||||
Check_Fpu();
|
||||
return new BTTeam(creation_message);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
BTTeam::CreateMakeMessage(
|
||||
MakeMessage *creation_message,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
)
|
||||
{
|
||||
Check(creation_message);
|
||||
Check(model_file);
|
||||
|
||||
if (!Team::CreateMakeMessage(creation_message, model_file, directories))
|
||||
{
|
||||
return False;
|
||||
}
|
||||
|
||||
creation_message->classToCreate = BTTeamClassID;
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
BTTeam::TestInstance() const
|
||||
{
|
||||
return IsDerivedFrom(ClassDerivations);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
//===========================================================================//
|
||||
// File: btteam.hpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: BattleTech Team Specifications //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/11/96 JM initial coding //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
#if !defined (BTTEAM_HPP)
|
||||
# define BTTEAM_HPP
|
||||
|
||||
# if !defined (TEAM_HPP)
|
||||
# include <team.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//######################## CLASS BTTeam ##############################
|
||||
//##########################################################################
|
||||
class BTTeam :
|
||||
public Team
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data support
|
||||
//
|
||||
public:
|
||||
|
||||
static Derivation
|
||||
ClassDerivations;
|
||||
|
||||
static SharedData
|
||||
DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
|
||||
typedef void
|
||||
(BTTeam::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
void
|
||||
TeamSimulation(Scalar time_slice);
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Console Support
|
||||
//
|
||||
protected:
|
||||
|
||||
Time
|
||||
lastConsoleUpdate;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction / Destruction Support
|
||||
//
|
||||
public:
|
||||
|
||||
BTTeam(
|
||||
MakeMessage *creation_message,
|
||||
SharedData &shared_data = DefaultData
|
||||
);
|
||||
|
||||
~BTTeam();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static BTTeam*
|
||||
Make(MakeMessage *creation_message);
|
||||
|
||||
static Logical
|
||||
CreateMakeMessage (
|
||||
MakeMessage *creation_message,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
);
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,209 @@
|
||||
//===========================================================================//
|
||||
// File: txttores.cpp //
|
||||
// Project: Resource Tools //
|
||||
// Author: Jerry Edsall //
|
||||
// Purpose: Program to convert Notation files to MUNGA .res files. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (c) 1995 Virtual World Entertainment, Inc. //
|
||||
// All rights reserved worldwide. //
|
||||
// This unpublished source code is PROPRIETARY and CONFIDENTIAL. //
|
||||
//===========================================================================//
|
||||
|
||||
#include "bt.hpp"
|
||||
|
||||
#if !defined(BTTOOL_HPP)
|
||||
# include "bttool.hpp"
|
||||
#endif
|
||||
|
||||
#if !defined(FILEUTIL_HPP)
|
||||
# include <fileutil.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(MECH_HPP)
|
||||
# include "mech.hpp"
|
||||
#endif
|
||||
|
||||
#if !defined(BTPLAYER_HPP)
|
||||
# include "btplayer.hpp"
|
||||
#endif
|
||||
|
||||
#if !defined(PROJTILE_HPP)
|
||||
# include "projtile.hpp"
|
||||
#endif
|
||||
|
||||
#if !defined(MISSILE_HPP)
|
||||
# include "missile.hpp"
|
||||
#endif
|
||||
|
||||
#if !defined(BTTEAM_HPP)
|
||||
# include "btteam.hpp"
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
BTTool::CreateMakeMessage(
|
||||
const char* class_name,
|
||||
Entity::MakeMessage *creation_message,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
)
|
||||
{
|
||||
if (!stricmp(class_name,"MechClassID"))
|
||||
{
|
||||
Mech::CreateMakeMessage(
|
||||
(Mech::MakeMessage*)creation_message,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
return True;
|
||||
}
|
||||
else if (!stricmp(class_name, "BTTeamClassID"))
|
||||
{
|
||||
BTTeam::CreateMakeMessage(
|
||||
(BTTeam::MakeMessage*)creation_message,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
return True;
|
||||
}
|
||||
|
||||
return
|
||||
ApplicationTool::CreateMakeMessage(
|
||||
class_name,
|
||||
creation_message,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
BTTool::CreateModelResource(
|
||||
ModelData &model_resources,
|
||||
const char *model_class,
|
||||
ResourceFile *resource_file,
|
||||
const char *model_name,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
)
|
||||
{
|
||||
if (!stricmp(model_class, "MechClassID"))
|
||||
{
|
||||
#if 0
|
||||
strcpy(ops_file_data, ops_name);
|
||||
strcat(ops_file_data, "::Standard::Vehicle::");
|
||||
strcat(ops_file_data, model_name );
|
||||
strcpy(ops_file_page, ops_name);
|
||||
strcat(ops_file_page, "::Standard::VehicleList");
|
||||
|
||||
ops_file->AppendEntry(ops_file_page, "vehicle", ops_file_data);
|
||||
ops_file->SetEntry(ops_file_data, "tag", model_name );
|
||||
ops_file->SetEntry(ops_file_data, "classID", "BTVh");
|
||||
ops_file->AppendEntry(ops_file_data, NULL, (char *)NULL);
|
||||
#endif
|
||||
|
||||
model_resources.gameResourceID =
|
||||
Mech::CreateModelResource(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
model_resources.subsystemResourceID =
|
||||
Mech::CreateSubsystemStream(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
model_resources.damageZoneResourceID =
|
||||
Mech::CreateDamageZoneStream(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
model_resources.skeletonResourceID =
|
||||
Mech::CreateSkeletonStream(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
model_resources.explosionTableResourceID =
|
||||
Mech::CreateExplosionTableStream(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
}
|
||||
else if (!stricmp(model_class, "ProjectileClassID"))
|
||||
{
|
||||
model_resources.gameResourceID =
|
||||
Projectile::CreateModelResource(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
}
|
||||
else if (!stricmp(model_class, "MissileClassID"))
|
||||
{
|
||||
model_resources.gameResourceID =
|
||||
Missile::CreateModelResource(
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
ApplicationTool::CreateModelResource(
|
||||
model_resources,
|
||||
model_class,
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
ResourceDescription::ResourceID
|
||||
BTTool::CreateControlMappingStream(
|
||||
const char *model_class,
|
||||
const char *mapping_name,
|
||||
NotationFile *mapping_file,
|
||||
ResourceFile *resource_file,
|
||||
const char *model_name,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories,
|
||||
PlatformTool *current_tool
|
||||
)
|
||||
{
|
||||
if (!stricmp(model_class, "MechClassID"))
|
||||
{
|
||||
return
|
||||
Mech::CreateControlMappingStream(
|
||||
mapping_name,
|
||||
mapping_file,
|
||||
platformTool->GetControlMappingFunction(),
|
||||
resource_file,
|
||||
model_name,
|
||||
model_file,
|
||||
directories,
|
||||
current_tool
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
//===========================================================================//
|
||||
// File: txttores.hpp //
|
||||
// Project: Art Tools //
|
||||
// Author: Jerry Edsall //
|
||||
// Purpose: Program to convert Notation files to MUNGA .res files. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (c) 1995 Virtual World Entertainment, Inc. //
|
||||
// All rights reserved worldwide. //
|
||||
// This unpublished source code is PROPRIETARY and CONFIDENTIAL. //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTTOOL_HPP)
|
||||
# define BTTOOL_HPP
|
||||
|
||||
# if !defined(TOOL_HPP)
|
||||
# include <tool.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//############################ RPTool ################################
|
||||
//##########################################################################
|
||||
|
||||
class BTTool:
|
||||
public ApplicationTool
|
||||
{
|
||||
protected:
|
||||
Logical
|
||||
CreateMakeMessage(
|
||||
const char* class_name,
|
||||
Entity::MakeMessage *creation_message,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
);
|
||||
|
||||
void
|
||||
CreateModelResource(
|
||||
ModelData &model_resources,
|
||||
const char *model_class,
|
||||
ResourceFile *resource_file,
|
||||
const char *model_name,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
);
|
||||
|
||||
ResourceDescription::ResourceID
|
||||
CreateControlMappingStream(
|
||||
const char *model_class,
|
||||
const char *mapping_name,
|
||||
NotationFile *mapping_file,
|
||||
ResourceFile *resource_file,
|
||||
const char *model_name,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories,
|
||||
PlatformTool *current_tool
|
||||
);
|
||||
|
||||
public:
|
||||
BTTool(PlatformTool *platform):
|
||||
ApplicationTool(platform)
|
||||
{}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
#include "testbt.hpp"
|
||||
|
||||
//#############################################################################
|
||||
// Test Class -- Emitter
|
||||
//
|
||||
|
||||
Logical
|
||||
Emitter::TestClass(Mech &mech)
|
||||
{
|
||||
Emitter *emitter;
|
||||
PowerBar *power_Bar;
|
||||
Condenser *condenser;
|
||||
Generator *generator;
|
||||
const Scalar time_Slice = 0.05f;
|
||||
|
||||
#if 0
|
||||
Tell("Testing Emitter .................\n");
|
||||
emitter = (Emitter*) mech.GetSubsystem(LaserSubsystemID);
|
||||
power_Bar = (PowerBar*) mech.GetSubsystem(PowerBarSubsystemID);
|
||||
condenser = (Condenser*) mech.GetSubsystem(CondenserSubsystemID);
|
||||
generator = (Generator*) mech.GetSubsystem(GeneratorSubsystemID);
|
||||
|
||||
// Test Initial Values as given in the resource file
|
||||
Test(Close_Enough(emitter->dischargeVoltage, 3.8f));
|
||||
Test(Close_Enough(emitter->outputVoltage, 0.0f));
|
||||
Test(Close_Enough(emitter->currentTemperature, 300.0f));
|
||||
|
||||
// Run the simulation a few times
|
||||
#if defined (TEST_DEBUG)
|
||||
Dump(emitter->currentLevel);
|
||||
Dump(emitter->outputVoltage);
|
||||
Dump(emitter->currentTemperature);
|
||||
#endif
|
||||
Test(Close_Enough(emitter->currentLevel,0.0f));
|
||||
Test(Close_Enough(emitter->outputVoltage,0.0f));
|
||||
|
||||
// Run the Simulation Loops
|
||||
MemoryStream stream(NULL, 0);
|
||||
condenser->HeatSimulation(time_Slice, stream);
|
||||
power_Bar->PoweredSimulation(time_Slice, stream);
|
||||
emitter->EmitterSimulation(time_Slice, stream);
|
||||
generator->GeneratorSimulation(time_Slice, stream);
|
||||
|
||||
#if defined (TEST_DEBUG)
|
||||
Dump(emitter->currentLevel);
|
||||
Dump(emitter->outputVoltage);
|
||||
Dump(emitter->currentTemperature);
|
||||
#endif
|
||||
|
||||
Test(Close_Enough(emitter->outputVoltage,0.00f,0.001f));
|
||||
Test(Close_Enough(emitter->currentTemperature, 300.00f,0.001f));
|
||||
|
||||
|
||||
emitter->outputVoltage = 5.0f; //Give it enough to fire!
|
||||
#if defined (TEST_DEBUG)
|
||||
Dump(emitter->outputVoltage);
|
||||
#endif
|
||||
|
||||
emitter->AcceptHeat(35.0f);
|
||||
// Run the Simulation Loops
|
||||
condenser->HeatSimulation(time_Slice, stream);
|
||||
power_Bar->PoweredSimulation(time_Slice, stream);
|
||||
emitter->EmitterSimulation(time_Slice, stream);
|
||||
|
||||
#if defined (TEST_DEBUG)
|
||||
Dump(emitter->currentLevel);
|
||||
Dump(emitter->outputVoltage);
|
||||
Dump(emitter->currentTemperature);
|
||||
#endif
|
||||
Test(Close_Enough(emitter->currentTemperature, 301.75f, 0.001f));
|
||||
|
||||
// Run the Simulation Loops
|
||||
condenser->HeatSimulation(time_Slice, stream);
|
||||
power_Bar->PoweredSimulation(time_Slice, stream);
|
||||
emitter->EmitterSimulation(time_Slice, stream);
|
||||
|
||||
#if defined( TEST_DEBUG)
|
||||
Dump(emitter->currentLevel);
|
||||
Dump(emitter->outputVoltage);
|
||||
Dump(emitter->currentTemperature);
|
||||
#endif
|
||||
Test(Close_Enough(emitter->currentTemperature, 301.597f, 0.001f));
|
||||
|
||||
// Return Power Bar and Laser to Initial States!
|
||||
condenser->ResetToInitialState();
|
||||
power_Bar->ResetToInitialState();
|
||||
emitter->ResetToInitialState();
|
||||
generator->ResetToInitialState();
|
||||
#endif
|
||||
return True;
|
||||
}
|
||||
//########################################################################
|
||||
// resetToInitialState Emitter
|
||||
//
|
||||
void Emitter::ResetToInitialState()
|
||||
{
|
||||
SetSimulationState(Loaded);
|
||||
PoweredSubsystem::ResetToInitialState();
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
//===========================================================================//
|
||||
// File: gauss.cc //
|
||||
// Project: BT Brick: Entity Manager //
|
||||
// Contents: Basic weapons system pieces //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 04/13/95 JM Initial coding. //
|
||||
// 07/19/95 GDU Complied with new munga and added electrical behavior
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
//
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(GAUSS_HPP)
|
||||
# include <gauss.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
// Shared Data Support
|
||||
//
|
||||
GaussRifle::SharedData
|
||||
GaussRifle::DefaultData(
|
||||
GaussRifle::ClassDerivations,
|
||||
GaussRifle::MessageHandlers,
|
||||
GaussRifle::AttributeIndex,
|
||||
GaussRifle::StateCount
|
||||
);
|
||||
|
||||
Derivation
|
||||
GaussRifle::ClassDerivations(
|
||||
Emitter::ClassDerivations,
|
||||
"GaussRifle"
|
||||
);
|
||||
|
||||
|
||||
//#############################################################################
|
||||
// Messaging Support
|
||||
//
|
||||
|
||||
#if 0
|
||||
//#############################################################################
|
||||
// Attribute Support
|
||||
//
|
||||
|
||||
const GaussRifle::IndexEntry
|
||||
GaussRifle::AttributePointers[]=
|
||||
{
|
||||
ATTRIBUTE_ENTRY(GaussRifle, DischargeVoltage, dischargeVoltage)
|
||||
};
|
||||
|
||||
GaussRifle::AttributeIndexSet
|
||||
GaussRifle::AttributeIndex(
|
||||
ELEMENTS(GaussRifle::AttributePointers),
|
||||
GaussRifle::AttributePointers,
|
||||
Emitter::AttributeIndex
|
||||
);
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
// Model Support
|
||||
//
|
||||
|
||||
void
|
||||
GaussRifle::FireWeapon()
|
||||
{
|
||||
//
|
||||
// Fire the weapon
|
||||
//
|
||||
outputVoltage = 0.0f;
|
||||
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//#############################################################################
|
||||
// Constructer/Destructor Support
|
||||
//
|
||||
|
||||
GaussRifle::GaussRifle(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
SharedData &shared_data
|
||||
):
|
||||
Emitter(owner, subsystem_ID, subsystem_resource, shared_data)
|
||||
{
|
||||
Check(owner);
|
||||
Check_Pointer(subsystem_resource);
|
||||
outputVoltage = 0.0f;
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
GaussRifle::~GaussRifle()
|
||||
{
|
||||
Check(this);
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CreateStreamedSubsystem
|
||||
//
|
||||
Logical
|
||||
GaussRifle::CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes
|
||||
)
|
||||
{
|
||||
|
||||
if (
|
||||
!Emitter::CreateStreamedSubsystem(
|
||||
resource_file,
|
||||
model_file,
|
||||
model_name,
|
||||
subsystem_name,
|
||||
subsystem_resource,
|
||||
subsystem_file,
|
||||
directories,
|
||||
passes
|
||||
)
|
||||
)
|
||||
{
|
||||
Check_Fpu();
|
||||
return False;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
subsystem_resource->subsystemModelSize = sizeof(*subsystem_resource);
|
||||
subsystem_resource->classID = RegisteredClass::GaussRifleClassID;
|
||||
|
||||
|
||||
Check_Fpu();
|
||||
return True;
|
||||
}
|
||||
|
||||
Logical
|
||||
GaussRifle::TestInstance() const
|
||||
{
|
||||
return IsDerivedFrom(ClassDerivations);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
//===========================================================================//
|
||||
// File: gauss.hh //
|
||||
// Project: BT Brick: Entity Manager //
|
||||
// Contents: Gauss Rifle class, derives from Projectile Weapon //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 04/13/95 JM Initial coding. //
|
||||
// 07/19/95 GDU Complied to new munga, added new electrical behavior //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined (GAUSS_HPP)
|
||||
#define GAUSS_HPP
|
||||
|
||||
#if !defined(EMITTER_HPP)
|
||||
# include <emitter.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
//##################### Forward Class Declarations #######################
|
||||
class Mech;
|
||||
class Projectile;
|
||||
|
||||
//###########################################################################
|
||||
//######################### GaussRifle Model Resource ########################
|
||||
//###########################################################################
|
||||
struct GaussRifle__SubsystemResource:
|
||||
public Emitter::SubsystemResource
|
||||
{
|
||||
Scalar dischargeVoltage;
|
||||
};
|
||||
//###########################################################################
|
||||
//######################### CLASS -- GaussRifle ##########################
|
||||
//###########################################################################
|
||||
class GaussRifle : public Emitter
|
||||
{
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Messageing Support
|
||||
//
|
||||
|
||||
#if 0
|
||||
//##########################################################################
|
||||
// Attribute Support
|
||||
//
|
||||
public:
|
||||
|
||||
enum {
|
||||
= Emitter::NextAttributeID,
|
||||
NextAttributeID
|
||||
};
|
||||
|
||||
private:
|
||||
static const IndexEntry AttributePointers[];
|
||||
|
||||
public:
|
||||
static AttributeIndexSet AttributeIndex;
|
||||
#endif
|
||||
|
||||
//##########################################################################
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
|
||||
|
||||
typedef void
|
||||
(GaussRifle::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
void
|
||||
GaussRifleSimulation(Scalar time_slice);
|
||||
|
||||
//##########################################################################
|
||||
// TestClass Support
|
||||
//
|
||||
public:
|
||||
|
||||
static Logical
|
||||
TestClass(Mech &);
|
||||
void
|
||||
ResetToInitialState();
|
||||
|
||||
//##########################################################################
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
typedef GaussRifle__SubsystemResource SubsystemResource;
|
||||
|
||||
GaussRifle(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
SharedData &shared_data=DefaultData
|
||||
);
|
||||
~GaussRifle();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static int
|
||||
CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes =1
|
||||
);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Local data for the gun class
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
void
|
||||
FireWeapon();
|
||||
|
||||
Vector3D
|
||||
muzzleVelocity;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#include "testbt.hpp"
|
||||
|
||||
//#############################################################################
|
||||
// TestClass -- Generator
|
||||
//
|
||||
Logical Generator::TestClass(Mech &)
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
//###########################################################################
|
||||
// ResetToIntialState -- Generator
|
||||
//
|
||||
void Generator::ResetToInitialState()
|
||||
{
|
||||
HeatableSubsystem::ResetToInitialState();
|
||||
outputVoltage = 0.0f;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
#include "heat.hpp"
|
||||
#include "app.hpp"
|
||||
#include "testbt.hpp"
|
||||
|
||||
#define JM_CLOSE_ENOUGH 0.0005f
|
||||
|
||||
|
||||
//###########################################################################
|
||||
// Test Class for HeatableSubsystem
|
||||
//
|
||||
Logical
|
||||
HeatableSubsystem::TestClass(Mech &)
|
||||
{
|
||||
return True;
|
||||
}
|
||||
//###########################################################################
|
||||
// ResetToIntialState -- HeatableSubsystem
|
||||
//
|
||||
void HeatableSubsystem::ResetToInitialState()
|
||||
{
|
||||
currentTemperature = 300.0f;
|
||||
heatLoad = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//###########################################################################
|
||||
// Test Class for Condenser
|
||||
//
|
||||
Logical Condenser::TestClass( Mech& )
|
||||
{
|
||||
|
||||
return True;
|
||||
}
|
||||
//###########################################################################
|
||||
// ResetToIntialState -- Condenser
|
||||
//
|
||||
void Condenser::ResetToInitialState()
|
||||
{
|
||||
HeatableSubsystem::ResetToInitialState();
|
||||
}
|
||||
//###########################################################################
|
||||
// Test Class for HeatSink
|
||||
//
|
||||
|
||||
Logical HeatSink::TestClass( Mech& )
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
//###########################################################################
|
||||
// ResetToIntialState -- Condenser
|
||||
//
|
||||
void HeatSink::ResetToInitialState()
|
||||
{
|
||||
HeatableSubsystem::ResetToInitialState();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
//==========================================================================//
|
||||
// File: mechdmg.hpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: Mech::DamageZone //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 06/05/95 JM Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(MECHDMG_HPP)
|
||||
# define MECHDMG_HPP
|
||||
|
||||
# if !defined(DAMAGE_HPP)
|
||||
# include <damage.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(SLOT_HPP)
|
||||
# include <slot.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(TABLE_HPP)
|
||||
# include <table.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(ENTITYID_HPP)
|
||||
# include <entityid.hpp>
|
||||
# endif
|
||||
|
||||
class Mech;
|
||||
class Subsystem;
|
||||
class DamageZone;
|
||||
|
||||
//##########################################################################
|
||||
//###################### MechCriticalSubsystem #################
|
||||
//##########################################################################
|
||||
|
||||
class
|
||||
MechCriticalSubsystem SIGNATURED
|
||||
{
|
||||
public:
|
||||
|
||||
MechCriticalSubsystem(DamageZone *owner);
|
||||
|
||||
virtual ~MechCriticalSubsystem();
|
||||
|
||||
SlotOf<Subsystem*>
|
||||
subsystemPlug;
|
||||
|
||||
Scalar
|
||||
damagePercentage, damagePercentageUsed;
|
||||
|
||||
Scalar
|
||||
criticalWeight;
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//##########################################################################
|
||||
//#################### Mech::DamageZone ###########################
|
||||
//##########################################################################
|
||||
|
||||
class Mech__DamageZone :
|
||||
public DamageZone
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// LOD Support
|
||||
//
|
||||
protected:
|
||||
|
||||
void
|
||||
LODDamageRouter(EntityID inflicting, Damage damage);
|
||||
|
||||
int
|
||||
RandomRedirect();
|
||||
|
||||
typedef PlugOf<int> IntegerPlug;
|
||||
|
||||
typedef TableOf<IntegerPlug*, int> DamageZoneIndexTable;
|
||||
|
||||
typedef TableIteratorOf<IntegerPlug*, int> DamageZoneIndexTableIterator;
|
||||
|
||||
|
||||
// Zones which are artifacts have a table of their real children.
|
||||
|
||||
DamageZoneIndexTable redirectTable;
|
||||
|
||||
// The result of the last random redirect
|
||||
|
||||
int lastHitZone;
|
||||
Scalar lastDamageTime;
|
||||
EntityID lastInflicting;
|
||||
//
|
||||
// Zones which are real have a pointer (slot) back to their artifact parent.
|
||||
// With the current art (1/30/96) no zone has both a parent and children,
|
||||
// and many zones have neither.
|
||||
|
||||
SlotOf<Mech__DamageZone*> parentArtifactZone;
|
||||
|
||||
void
|
||||
UpdateLODDamageLevel();
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Descending Heirarchy when DamageZone Destroyed Support
|
||||
//
|
||||
void
|
||||
ShortAttachedGenerators();
|
||||
|
||||
void
|
||||
SendSubsystemDamage();
|
||||
|
||||
void
|
||||
RecurseSegmentTable(Mech *my_mech);
|
||||
|
||||
int
|
||||
segmentIndex;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Damage Support
|
||||
//
|
||||
public:
|
||||
|
||||
void
|
||||
TakeDamage(Damage& damage);
|
||||
|
||||
Subsystem*
|
||||
CriticalHit(Damage &damage_data);
|
||||
|
||||
protected:
|
||||
|
||||
Logical
|
||||
vitalDamageZone;
|
||||
|
||||
Logical
|
||||
descendOnDestruction;
|
||||
|
||||
Logical
|
||||
destroySiblingsOnDestruction;
|
||||
|
||||
Logical
|
||||
leftLeg;
|
||||
|
||||
Logical
|
||||
rightLeg;
|
||||
|
||||
int
|
||||
criticalSubsystemCount;
|
||||
|
||||
Scalar
|
||||
criticalWeightSum;
|
||||
|
||||
MechCriticalSubsystem
|
||||
**criticalSubsystems;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Graphic State Support
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
void
|
||||
SetGraphicState(Enumeration new_state);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction / Destruction
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
static const int NullDamageZone;
|
||||
|
||||
Mech__DamageZone(
|
||||
Mech *mech,
|
||||
int damage_zone_index,
|
||||
MemoryStream *stream
|
||||
);
|
||||
|
||||
void SetLODParentPointers();
|
||||
|
||||
~Mech__DamageZone();
|
||||
|
||||
static Logical
|
||||
CreateStreamedDamageZone(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
NotationFile *skl_file,
|
||||
const char *damage_zone_name,
|
||||
NotationFile *dmg_file,
|
||||
const ResourceDirectories *directories,
|
||||
MemoryStream *damage_zone_stream
|
||||
);
|
||||
|
||||
static int
|
||||
GetSegmentIndex(
|
||||
CString damage_zone_name,
|
||||
NotationFile *skl_file
|
||||
);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,149 @@
|
||||
#if !defined(MECHTECH_HPP)
|
||||
# define MECHTECH_HPP
|
||||
|
||||
# if !defined(MECHSUB_HPP)
|
||||
# include <mechsub.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//###################### MechTech::StatusInfo ########################
|
||||
//##########################################################################
|
||||
|
||||
struct MechTech__StatusInfo SIGNATURED
|
||||
{
|
||||
public:
|
||||
int
|
||||
currentStatus,
|
||||
wooHooed;
|
||||
Time
|
||||
startTime,
|
||||
wooHooEnd;
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//###############3### MechTech::SubsystemMonitor #####################
|
||||
//##########################################################################
|
||||
|
||||
struct MechTech__SubsystemMonitor:
|
||||
public Plug
|
||||
{
|
||||
friend class MechTech;
|
||||
|
||||
//##########################################################################
|
||||
// Memory Allocation Support
|
||||
//
|
||||
private:
|
||||
static MemoryBlock AllocatedMemory;
|
||||
|
||||
void*
|
||||
operator new(size_t)
|
||||
{return AllocatedMemory.New();}
|
||||
void
|
||||
operator delete(void *where)
|
||||
{AllocatedMemory.Delete(where);}
|
||||
|
||||
public:
|
||||
MechTech__StatusInfo statusArray[MechSubsystem::TechStatusTypeCount];
|
||||
MechSubsystem *monitoredSubsystem;
|
||||
|
||||
MechTech__SubsystemMonitor(MechSubsystem *subsystem);
|
||||
~MechTech__SubsystemMonitor();
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//##################### MechTech::ModelResource ######################
|
||||
//##########################################################################
|
||||
|
||||
struct MechTech__SubsystemResource:
|
||||
public Subsystem::SubsystemResource
|
||||
{
|
||||
ResourceDescription::ResourceID
|
||||
alarmModel;
|
||||
Scalar
|
||||
wooHooMinimumDuration,
|
||||
wooHooDurationRange,
|
||||
wooHooChance;
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//############################ MechTech ##############################
|
||||
//##########################################################################
|
||||
|
||||
class MechTech:
|
||||
public Subsystem
|
||||
{
|
||||
//##########################################################################
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//##########################################################################
|
||||
// Attribute Support
|
||||
//
|
||||
public:
|
||||
typedef MechTech__StatusInfo StatusInfo;
|
||||
typedef MechTech__SubsystemMonitor SubsystemMonitor;
|
||||
typedef MechTech__SubsystemResource SubsystemResource;
|
||||
|
||||
//##########################################################################
|
||||
// Construction and Destruction Support
|
||||
//
|
||||
public:
|
||||
~MechTech();
|
||||
|
||||
static Logical
|
||||
CreateStreamedSubsystem(
|
||||
NotationFile *model_file,
|
||||
const char* model_name,
|
||||
const char* subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
ResourceFile *resource_file
|
||||
);
|
||||
|
||||
MechTech(
|
||||
Mech *entity,
|
||||
int subsystem_id,
|
||||
SubsystemResource *model,
|
||||
SharedData &shared_data = DefaultData
|
||||
);
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
//##########################################################################
|
||||
// Model support
|
||||
//
|
||||
public:
|
||||
typedef void
|
||||
(MechTech::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
ChainOf<SubsystemMonitor*> subsystemMonitors;
|
||||
Scalar
|
||||
wooHooMinimumDuration,
|
||||
wooHooDurationRange,
|
||||
wooHooChance;
|
||||
|
||||
ResourceDescription::ResourceID
|
||||
alarmModel;
|
||||
|
||||
void
|
||||
TechnicalAssistance(Scalar time_slice);
|
||||
|
||||
Mech*
|
||||
GetEntity()
|
||||
{return (Mech*)Subsystem::GetEntity();}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
//===========================================================================//
|
||||
// File: messmgr.hh //
|
||||
// Project: BattleTech //
|
||||
// Contents: Consolidates Messages from Subsystems and Graphics Generation //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 09/30/95 JM Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined (MESSMGR_HPP)
|
||||
# define MESSMGR_HPP
|
||||
|
||||
#if !defined (SUBSYSTM_HPP)
|
||||
# include <subsystm.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined (RESOURCE_HPP)
|
||||
# include <resource.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined (VCHAIN_HPP)
|
||||
# include <vchain.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined (PLUG_HPP)
|
||||
# include <plug.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(ENTITYID_HPP)
|
||||
# include <entityid.hpp>
|
||||
#endif
|
||||
|
||||
class Entity;
|
||||
class Mech;
|
||||
class Entity__TakeDamageMessage;
|
||||
|
||||
//##########################################################################
|
||||
//########## SubsystemMessageManager::SubsystemResource ###############
|
||||
//##########################################################################
|
||||
struct SubsystemMessageManager__SubsystemResource :
|
||||
public Subsystem::SubsystemResource
|
||||
{
|
||||
ResourceDescription::ResourceID
|
||||
terrainHitExplosionID;
|
||||
|
||||
Scalar
|
||||
rendererCompensateTime;
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//##################### SubsystemMessageManager ###################
|
||||
//##########################################################################
|
||||
class
|
||||
SubsystemMessageManager :
|
||||
public Subsystem
|
||||
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Death and Damage Support
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
void DeathReset(Logical) {}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
protected:
|
||||
|
||||
struct CommonDamageInformation
|
||||
{
|
||||
Entity
|
||||
*entityHit;
|
||||
|
||||
int
|
||||
damageZoneIndex;
|
||||
|
||||
Point3D
|
||||
impactPoint;
|
||||
|
||||
} commonDamageInformation;
|
||||
|
||||
public:
|
||||
|
||||
struct DamageInformation
|
||||
: public Plug
|
||||
{
|
||||
Enumeration
|
||||
damageType;
|
||||
|
||||
int
|
||||
subsystemID;
|
||||
};
|
||||
|
||||
typedef void
|
||||
(SubsystemMessageManager::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
void
|
||||
ConsolidateAndSendDamage(Scalar time_slice);
|
||||
|
||||
Mech*
|
||||
GetEntity()
|
||||
{Check(this); return Cast_Object(Mech*, Subsystem::GetEntity());}
|
||||
|
||||
protected:
|
||||
|
||||
Scalar
|
||||
rendererCompensateTime;
|
||||
|
||||
typedef PlugOf<ResourceDescription::ResourceID>
|
||||
ResourceIDPlug;
|
||||
|
||||
VChainOf<ResourceIDPlug*, ResourceDescription::ResourceID>
|
||||
weaponExplosions;
|
||||
|
||||
VChainOf<DamageInformation*, Scalar> damageInformation;
|
||||
|
||||
ResourceDescription::ResourceID
|
||||
terrainHitExplosionID;
|
||||
|
||||
void
|
||||
CreateWeaponExplosions(
|
||||
Logical terrain_hit,
|
||||
EntityID entity_hit,
|
||||
Point3D explode_position
|
||||
);
|
||||
|
||||
public:
|
||||
|
||||
void
|
||||
AddDamageMessage(
|
||||
Entity *damaged_entity,
|
||||
Entity__TakeDamageMessage *message
|
||||
);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction Support
|
||||
//
|
||||
public:
|
||||
|
||||
typedef SubsystemMessageManager__SubsystemResource SubsystemResource;
|
||||
|
||||
SubsystemMessageManager(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *sub_res,
|
||||
SharedData &shared_data=DefaultData
|
||||
);
|
||||
|
||||
~SubsystemMessageManager();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static Logical
|
||||
CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories
|
||||
);
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,120 @@
|
||||
//============================================================================//
|
||||
// File: mislanch.hh //
|
||||
// Project: BattleTech //
|
||||
// Contents: Weapon Which Lanches a missile //
|
||||
// Derived From Projectile Weapon //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ------------------------------------------------------------//
|
||||
// 04/13/95 JM Initial coding. //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//============================================================================//
|
||||
|
||||
#if !defined (MISLANCH_HPP)
|
||||
# define MISLANCH_HPP
|
||||
|
||||
# if !defined(PROJWEAP_HPP)
|
||||
# include <projweap.hpp>
|
||||
# endif
|
||||
|
||||
|
||||
class Missile;
|
||||
|
||||
//################# MissileLauncher SubsystemResource ###################
|
||||
struct MissileLauncher__SubsystemResource:
|
||||
public ProjectileWeapon::SubsystemResource
|
||||
{
|
||||
int missileCount;
|
||||
|
||||
Vector3D
|
||||
muzzleVelocity;
|
||||
};
|
||||
|
||||
|
||||
//###########################################################################
|
||||
//################# CLASS -- MissileLauncher ##########################
|
||||
//###########################################################################
|
||||
|
||||
class MissileLauncher:
|
||||
public ProjectileWeapon
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Messaging Support
|
||||
//
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Attribute Support
|
||||
//
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Damage Support
|
||||
//
|
||||
public:
|
||||
void TakeDamage(Damage &damage);
|
||||
void DeathReset(Logical full_reset);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
|
||||
typedef void
|
||||
(MissileLauncher::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
|
||||
typedef MissileLauncher__SubsystemResource SubsystemResource;
|
||||
MissileLauncher(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
SharedData &default_data = DefaultData
|
||||
);
|
||||
~MissileLauncher();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static Logical
|
||||
CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes =1
|
||||
);
|
||||
|
||||
|
||||
// local stuff
|
||||
protected:
|
||||
|
||||
void
|
||||
FireWeapon();
|
||||
|
||||
int missileCount; // how many individual missiles get fired at once
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,44 @@
|
||||
#include "testbt.hpp"
|
||||
#include "projweap.hpp"
|
||||
|
||||
|
||||
//#############################################################################
|
||||
// Missile Test Class
|
||||
//
|
||||
|
||||
Logical Missile::TestClass(Mech &mech)
|
||||
{
|
||||
ProjectileWeapon *gun;
|
||||
Missile *missile;
|
||||
MissileThruster *thruster;
|
||||
Seeker *seeker;
|
||||
Scalar time_slice =0.5f;
|
||||
|
||||
gun = (ProjectileWeapon*) mech.GetSubsystem(ProjectileWeaponSubsystemID);
|
||||
|
||||
gun->triggerState = 1;
|
||||
MemoryStream stream(NULL, 0);
|
||||
gun->ProjectileWeaponSimulation(time_slice, stream);
|
||||
gun->triggerState = -1;
|
||||
|
||||
missile = (Missile*) gun->currentProjectile; // BAD!!!
|
||||
Check(missile);
|
||||
thruster = (MissileThruster*) missile->GetSubsystem(Missile::MissileThrusterSubsystem);
|
||||
seeker = (Seeker*) missile->GetSubsystem(Missile::SeekerSubsystem);
|
||||
Check(thruster);
|
||||
Check(seeker);
|
||||
|
||||
seeker->FindTarget(time_slice, stream);
|
||||
thruster->MissileThrusterSimulation(time_slice, stream);
|
||||
missile->MoveAndCollide(time_slice, stream);
|
||||
|
||||
time_slice = 5.0f;
|
||||
gun->ProjectileWeaponSimulation(time_slice, stream);
|
||||
seeker->FindTarget(time_slice, stream);
|
||||
thruster->MissileThrusterSimulation(time_slice, stream);
|
||||
missile->MoveAndCollide(time_slice, stream);
|
||||
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
//============================================================================//
|
||||
// File: misthrst.hh //
|
||||
// Project: BattleTech //
|
||||
// Contents: Missile Thruster provides power to move the missile //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ------------------------------------------------------------//
|
||||
// 04/13/95 JM Initial coding. //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//============================================================================//
|
||||
|
||||
#if !defined (MISTHRST_HPP)
|
||||
#define MISTHRST_HPP
|
||||
|
||||
#if !defined(SUBSYSTM_HPP)
|
||||
#include <subsystm.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(ANGLE_HPP)
|
||||
#include <angle.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(MOTION_HPP)
|
||||
#include <motion.hpp>
|
||||
#endif
|
||||
|
||||
//################### Froward Class Declarations ######################
|
||||
class Missile;
|
||||
|
||||
//################### MissileThruster SubsystemResource #################
|
||||
|
||||
struct MissileThruster__SubsystemResource:
|
||||
public Subsystem::SubsystemResource
|
||||
{
|
||||
Scalar burnTime;
|
||||
Degree maxThrusterRotationRate;
|
||||
Scalar thrusterAcceleration;
|
||||
Scalar thrusterClimb;
|
||||
};
|
||||
|
||||
|
||||
//###########################################################################
|
||||
//######################### CLASS -- MissileThruster ##################
|
||||
//###########################################################################
|
||||
|
||||
|
||||
class MissileThruster :
|
||||
public Subsystem
|
||||
{
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Attribute Support
|
||||
//
|
||||
|
||||
public:
|
||||
enum {
|
||||
BurnTimeRemainingAttributeID = Subsystem::NextAttributeID,
|
||||
MaxThrusterRotationRateAttributeID,
|
||||
ThrusterAccelerationAttributeID,
|
||||
NextAttributeID
|
||||
};
|
||||
|
||||
public:
|
||||
static const IndexEntry AttributePointers[];
|
||||
|
||||
protected:
|
||||
static AttributeIndexSet AttributeIndex;
|
||||
|
||||
//
|
||||
// public attribute declarations go here
|
||||
//
|
||||
public:
|
||||
Scalar burnTimeRemaining;
|
||||
Radian maxThrusterRotationRate;
|
||||
const Scalar thrusterAcceleration;
|
||||
const Scalar thrusterClimb;
|
||||
Motion acceleration;
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
enum {
|
||||
ThrusterBurning= Subsystem::StateCount,
|
||||
StateCount
|
||||
};
|
||||
|
||||
typedef void
|
||||
(MissileThruster::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
MissileThrusterSimulation(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// TestClass Support
|
||||
//
|
||||
public:
|
||||
|
||||
static Logical
|
||||
TestClass(Missile &);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
|
||||
typedef MissileThruster__SubsystemResource SubsystemResource;
|
||||
|
||||
MissileThruster(
|
||||
Missile *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource
|
||||
);
|
||||
~MissileThruster();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Local Support
|
||||
//
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,5 @@
|
||||
SCC = This is a Source Code Control file
|
||||
|
||||
[bt.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT/BT", YOCAAAAA
|
||||
@@ -0,0 +1,166 @@
|
||||
//===========================================================================//
|
||||
// File: ppc.cc //
|
||||
// Project: BattleTech //
|
||||
// Contents: Particle Projection Cannon //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/13/95 JM Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <bt.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined (PPC_HPP)
|
||||
# include <ppc.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTPLAYER_HPP)
|
||||
# include <btplayer.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BTMSSN_HPP)
|
||||
# include <btmssn.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
// Shared Data Support
|
||||
//
|
||||
PPC::SharedData
|
||||
PPC::DefaultData(
|
||||
PPC::ClassDerivations,
|
||||
PPC::MessageHandlers,
|
||||
PPC::AttributeIndex,
|
||||
PPC::StateCount
|
||||
);
|
||||
|
||||
Derivation
|
||||
PPC::ClassDerivations(
|
||||
Emitter::ClassDerivations,
|
||||
"PPC"
|
||||
);
|
||||
|
||||
//#############################################################################
|
||||
// Model Data Support
|
||||
//
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
PPC::FireWeapon()
|
||||
{
|
||||
Check(this);
|
||||
|
||||
Emitter::FireWeapon();
|
||||
|
||||
|
||||
return;
|
||||
|
||||
#if 0
|
||||
Check(this);
|
||||
|
||||
Mech *mech = GetEntity();
|
||||
Check(mech);
|
||||
|
||||
BTPlayer *bt_player = Cast_Object(
|
||||
BTPlayer*,
|
||||
mech->GetPlayerLink()
|
||||
);
|
||||
Check(bt_player);
|
||||
Enumeration experienceLevel = bt_player->GetExperienceLevel();
|
||||
|
||||
if (experienceLevel == BTMission::NoviceMode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (targetWithinRange)
|
||||
{
|
||||
Damage energy_damage(damageData);
|
||||
energy_damage.damageType = Damage::EnergyDamageType;
|
||||
energy_damage.damageAmount = 0.0f;
|
||||
|
||||
Mech *mech = GetEntity();
|
||||
Check(mech);
|
||||
|
||||
SendDamage(
|
||||
mech->targetReticle.targetEntity,
|
||||
energy_damage
|
||||
);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
//#############################################################################
|
||||
// Constructer/Destructor Support
|
||||
//
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
PPC::PPC(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
SharedData &shared_data
|
||||
):
|
||||
Emitter(owner, subsystem_ID, subsystem_resource, shared_data)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
PPC::~PPC()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Create Streamed Subsystem
|
||||
//
|
||||
Logical
|
||||
PPC::CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes
|
||||
)
|
||||
{
|
||||
if (
|
||||
!Emitter::CreateStreamedSubsystem(
|
||||
resource_file,
|
||||
model_file,
|
||||
model_name,
|
||||
subsystem_name,
|
||||
subsystem_resource,
|
||||
subsystem_file,
|
||||
directories,
|
||||
passes
|
||||
)
|
||||
)
|
||||
{
|
||||
return False;
|
||||
}
|
||||
|
||||
subsystem_resource->subsystemModelSize = sizeof(*subsystem_resource);
|
||||
subsystem_resource->classID = RegisteredClass::PPCClassID;
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
PPC::TestInstance() const
|
||||
{
|
||||
return IsDerivedFrom(ClassDerivations);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//===========================================================================//
|
||||
// File: ppc.hh //
|
||||
// Project: BattleTech //
|
||||
// Contents: Particle Projection Cannon //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/13/95 JM Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined (PPC_HPP)
|
||||
# define PPC_HPP
|
||||
|
||||
#if !defined(EMITTER_HPP)
|
||||
#include <emitter.hpp>
|
||||
#endif
|
||||
|
||||
class PPC :
|
||||
public Emitter
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
|
||||
PPC(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
SharedData &shared_data
|
||||
);
|
||||
~PPC();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static int
|
||||
CreateStreamedSubsystem(
|
||||
ResourceFile *resource_file,
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes = 1
|
||||
);
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Local Data
|
||||
//
|
||||
protected:
|
||||
|
||||
void
|
||||
FireWeapon();
|
||||
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "testbt.hpp"
|
||||
|
||||
//#############################################################################
|
||||
// Projectile Test Class
|
||||
//
|
||||
|
||||
Logical Projectile::TestClass()
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include "projweap.hpp"
|
||||
#include "testbt.hpp"
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// ProjectileWeapon Test Class
|
||||
//
|
||||
Logical ProjectileWeapon::TestClass(Mech &)
|
||||
{
|
||||
|
||||
return True;
|
||||
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Reset To InitialState
|
||||
//
|
||||
void ProjectileWeapon::ResetToInitialState()
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
//=========================================================================//
|
||||
// File: seeker.hpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: A subsystem which guides, seek out and find a target //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ------------------------------------------------------------//
|
||||
// 04/13/95 JM Initial coding. //
|
||||
// 07/12/95 GDU Complied with new libraries, added seeker logic //
|
||||
//----------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//============================================================================//
|
||||
|
||||
#if !defined (SEEKER_HPP)
|
||||
#define SEEKER_HPP
|
||||
|
||||
#if !defined(SUBSYSTM_HPP)
|
||||
#include <subsystm.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(POINT3D_HPP)
|
||||
#include <point3d.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//######################### Forward Class Declarations ########################
|
||||
class Missile;
|
||||
class Entity;
|
||||
|
||||
//######################### Seeker Subsystem Resource ##########################
|
||||
struct Seeker__SubsystemResource:
|
||||
public Subsystem::SubsystemResource
|
||||
{
|
||||
|
||||
|
||||
};
|
||||
//###########################################################################
|
||||
//######################### CLASS -- Seeker ##########################
|
||||
//###########################################################################
|
||||
class Seeker : public Subsystem
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Messaging Support
|
||||
//
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Attribute Support
|
||||
//
|
||||
public:
|
||||
enum {
|
||||
TargetPositionAttributeID = Subsystem::NextAttributeID,
|
||||
RangeToTargetAttributeID,
|
||||
RangeFromCreationAttributeID,
|
||||
NextAttributeID
|
||||
};
|
||||
|
||||
private:
|
||||
static const IndexEntry AttributePointers[];
|
||||
|
||||
protected:
|
||||
static AttributeIndexSet AttributeIndex;
|
||||
|
||||
//
|
||||
// public attribute declarations go here
|
||||
//
|
||||
public:
|
||||
Point3D targetPosition; // for thruster
|
||||
const Point3D creationPoint; // where the missile was fired from
|
||||
Entity *targetEntity;
|
||||
const Point3D targetOffset;
|
||||
Scalar rangeToTarget, rangeFromCreation, startingRangeToTarget;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
enum {
|
||||
Empty = Subsystem::StateCount,
|
||||
StateCount};
|
||||
|
||||
typedef void
|
||||
(Seeker::*Performance)(Scalar time_slice);
|
||||
|
||||
|
||||
void
|
||||
LeadTarget();
|
||||
void
|
||||
FindTarget(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// TestClass Support
|
||||
//
|
||||
public:
|
||||
|
||||
static Logical
|
||||
TestClass(Missile &);
|
||||
void
|
||||
ResetToInitialState();
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
typedef Seeker__SubsystemResource SubsystemResource;
|
||||
|
||||
Seeker (
|
||||
Missile *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource,
|
||||
Entity *target,
|
||||
const Point3D offset
|
||||
);
|
||||
~Seeker();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,143 @@
|
||||
//===========================================================================//
|
||||
// File: sensor.hpp //
|
||||
// Project: BattleTech //
|
||||
// Contents: Sensor subsystem //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 8/10/95 GDU Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
#if !defined(SENSOR_HPP)
|
||||
# define SENSOR_HPP
|
||||
|
||||
#if !defined(POWERSUB_HPP)
|
||||
#include "powersub.hpp"
|
||||
#endif
|
||||
|
||||
|
||||
//##########################################################################
|
||||
//################# SensorSubsystemResource #######################
|
||||
//##########################################################################
|
||||
|
||||
struct Sensor__SubsystemResource:
|
||||
public PoweredSubsystem::SubsystemResource
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//########################## Sensor ###############################
|
||||
//##########################################################################
|
||||
|
||||
class Sensor:
|
||||
public PoweredSubsystem
|
||||
{
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Death and Damage Support
|
||||
//
|
||||
public:
|
||||
|
||||
void
|
||||
TakeDamage(Damage &damage);
|
||||
|
||||
void
|
||||
DeathReset(Logical full_recovery);
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Attribute Support
|
||||
//
|
||||
public:
|
||||
enum {
|
||||
RadarPercentAttributeID = PoweredSubsystem::NextAttributeID,
|
||||
SelfTestAttributeID,
|
||||
BadVoltageAttributeID,
|
||||
NextAttributeID
|
||||
};
|
||||
|
||||
private:
|
||||
static const IndexEntry AttributePointers[];
|
||||
|
||||
protected:
|
||||
static AttributeIndexSet AttributeIndex;
|
||||
|
||||
|
||||
|
||||
public:
|
||||
Scalar
|
||||
radarPercent;
|
||||
Logical
|
||||
selfTest,
|
||||
badVoltage;
|
||||
|
||||
|
||||
//##########################################################################
|
||||
// Simulation Support
|
||||
//
|
||||
public:
|
||||
|
||||
typedef void
|
||||
(Sensor::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
void
|
||||
SensorSimulation(Scalar time_slice);
|
||||
|
||||
//##########################################################################
|
||||
// Test Class Support
|
||||
//
|
||||
public:
|
||||
static Logical
|
||||
TestClass(Mech&);
|
||||
void
|
||||
ResetToInitialState();
|
||||
|
||||
//##########################################################################
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
typedef Sensor__SubsystemResource SubsystemResource;
|
||||
|
||||
Sensor(
|
||||
Mech *owner,
|
||||
int subsystem_ID,
|
||||
SubsystemResource *subsystem_resource
|
||||
);
|
||||
~Sensor();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static int
|
||||
CreateStreamedSubsystem(
|
||||
NotationFile *model_file,
|
||||
const char *model_name,
|
||||
const char *subsystem_name,
|
||||
SubsystemResource *subsystem_resource,
|
||||
NotationFile *subsystem_file,
|
||||
const ResourceDirectories *directories,
|
||||
int passes = 1
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
#if !defined(TESTBT_HPP)
|
||||
# define TESTBT_HPP
|
||||
|
||||
# if !defined(APP_HPP)
|
||||
# include <app.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(APP_THP)
|
||||
# include <app.thp>
|
||||
# endif
|
||||
|
||||
# if !defined(MISSION_HPP)
|
||||
# include <mission.hpp>
|
||||
# endif
|
||||
|
||||
#define TEST_DEBUG
|
||||
|
||||
//##########################################################################
|
||||
//###################### TestBTApplication ##########################
|
||||
//##########################################################################
|
||||
|
||||
class TestBTApplication:
|
||||
public TestApplication
|
||||
{
|
||||
public:
|
||||
TestBTApplication(StreamableResourceFile *resource);
|
||||
~TestBTApplication();
|
||||
|
||||
static Logical
|
||||
ParseCommandLine(
|
||||
int argc,
|
||||
char *argv[],
|
||||
CString *egg_notation_file_name
|
||||
);
|
||||
|
||||
private:
|
||||
Registry*
|
||||
MakeRegistry();
|
||||
Entity*
|
||||
MakeViewpointEntity(Entity::MakeMessage *message);
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//########################### TestBTMission ##########################
|
||||
//##########################################################################
|
||||
|
||||
class TestBTMission:
|
||||
public Mission
|
||||
{
|
||||
public:
|
||||
TestBTMission(
|
||||
NotationFile *notation_file,
|
||||
StreamableResourceFile *resources
|
||||
);
|
||||
~TestBTMission();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
void
|
||||
CreatePlayerMessage(
|
||||
NotationFile *notation_file,
|
||||
StreamableResourceFile *resources
|
||||
);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,148 @@
|
||||
//===========================================================================//
|
||||
// File: jmover.hh //
|
||||
// Project: MUNGA Brick: Model Manager //
|
||||
// Contents: Interface specification for moving entity class //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/21/95 JMA Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(TURRET_HPP)
|
||||
# define TURRET_HPP
|
||||
|
||||
# if !defined(JMOVER_HPP)
|
||||
# include <jmover.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//################## Turret::ModelResource ###########################
|
||||
//##########################################################################
|
||||
|
||||
struct Turret__ModelResource:
|
||||
JointedMover::ModelResource
|
||||
{
|
||||
char turretJointName[32];
|
||||
char gunJointName[32];
|
||||
ResourceDescription::ResourceID
|
||||
explosionResourceID;
|
||||
Scalar
|
||||
rotationSpeedMin,
|
||||
rotationSpeedMax,
|
||||
elevationSpeedMin,
|
||||
elevationSpeedMax,
|
||||
rateSkillMin,
|
||||
rateSkillMax,
|
||||
rateAdjMin,
|
||||
rateAdjMax,
|
||||
accuracySkillMin,
|
||||
accuracySkillMax,
|
||||
accuracyAdjMin,
|
||||
accuracyAdjMax;
|
||||
};
|
||||
|
||||
#if 0
|
||||
//##########################################################################
|
||||
//################## Turret::ModelResource ###########################
|
||||
//##########################################################################
|
||||
|
||||
class Turret__MakeMessage:
|
||||
JointedMover::MakeMessage
|
||||
{
|
||||
public:
|
||||
char teamName[32];
|
||||
char roleName[32];
|
||||
};
|
||||
#endif
|
||||
|
||||
//##########################################################################
|
||||
//######################### Turret ###################################
|
||||
//##########################################################################
|
||||
|
||||
class Turret:
|
||||
public JointedMover
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
#if 0
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Message Support
|
||||
//
|
||||
private:
|
||||
static const HandlerEntry MessageHandlerEntries[];
|
||||
protected:
|
||||
static MessageHandlerSet MessageHandlers;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Attribute Support
|
||||
//
|
||||
public:
|
||||
enum{
|
||||
NextAttributeID
|
||||
};
|
||||
|
||||
private:
|
||||
static const IndexEntry AttributePointers[];
|
||||
|
||||
protected:
|
||||
static AttributeIndexSet AttributeIndex;
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Model Support
|
||||
//
|
||||
public:
|
||||
typedef Turret__ModelResource ModelResource;
|
||||
typedef void
|
||||
(Turret::*Performance)(Scalar time_slice);
|
||||
|
||||
void
|
||||
SetPerformance(Performance performance)
|
||||
{
|
||||
Check(this);
|
||||
activePerformance = (Simulation::Performance)performance;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction and Destruction
|
||||
//
|
||||
public:
|
||||
static Logical
|
||||
CreateMakeMessage(
|
||||
MemoryStream &creation_stream,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories
|
||||
);
|
||||
static ResourceDescription::ResourceID
|
||||
CreateModelResource(
|
||||
ResourceFile *resource_file,
|
||||
const char* model_name,
|
||||
NotationFile *model_file,
|
||||
const ResourceDirectories *directories,
|
||||
ModelResource* model = NULL
|
||||
);
|
||||
|
||||
static Turret*
|
||||
Make(MakeMessage *creation_message);
|
||||
|
||||
Turret(
|
||||
MakeMessage *creation_message,
|
||||
SharedData &virtual_data
|
||||
);
|
||||
~Turret();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,211 @@
|
||||
[release]
|
||||
version=1.0
|
||||
|
||||
//
|
||||
// Official resource maps and models should have an
|
||||
// id assigned to them, as should any object that could show up on a mission
|
||||
// review spool (even a test one).
|
||||
//
|
||||
// the format is xxxxx=xxxx.xxx /id:#
|
||||
//
|
||||
|
||||
// The next number to use is: 149
|
||||
//
|
||||
|
||||
[resource]
|
||||
name=btl4.res
|
||||
dircollision=solids\
|
||||
dirmodel=models\
|
||||
dirmap=maps\
|
||||
diraudio=audio\
|
||||
dirvideo=video\
|
||||
dirgauge=gauge\
|
||||
diranimation=anims\
|
||||
//
|
||||
// Player Model File
|
||||
//
|
||||
model=player.mod /id:75
|
||||
//
|
||||
// Explosion Model Files
|
||||
//
|
||||
model=lzrhiti.mod /id:1
|
||||
model=ppchiti.mod /id:2
|
||||
model=canhiti.mod /id:3
|
||||
model=mslhiti.mod /id:4
|
||||
model=dam3exp.mod /id:5
|
||||
model=dam4exp.mod /id:6
|
||||
model=dam4expi.mod /id:7
|
||||
model=dam1hiti.mod /id:8
|
||||
model=dam2hiti.mod /id:9
|
||||
model=dam3hiti.mod /id:10
|
||||
model=dam4hiti.mod /id:11
|
||||
model=desthiti.mod /id:12
|
||||
static=explode.onl
|
||||
model=explode.mod /id:13
|
||||
//model=mghit.mod /id:14
|
||||
model=ppchit.mod /id:15
|
||||
model=lzrhit.mod /id:16
|
||||
model=mslhit.mod /id:17
|
||||
model=canhit.mod /id:18
|
||||
model=gndhit.mod /id:19
|
||||
model=minhit.mod /id:20
|
||||
model=majhit.mod /id:21
|
||||
model=blhdead.mod /id:22
|
||||
model=lokdead.mod /id:23
|
||||
model=maddead.mod /id:76
|
||||
model=owndead.mod /id:24
|
||||
model=thrdead.mod /id:25
|
||||
model=vuldead.mod /id:77
|
||||
model=avadead.mod /id:113
|
||||
model=mechdead.mod /id:74
|
||||
model=dam1hit.mod /id:26
|
||||
model=dam2hit.mod /id:27
|
||||
model=dam3hit.mod /id:28
|
||||
model=dam4hit.mod /id:29
|
||||
model=desthit.mod /id:30
|
||||
model=stephit.mod /id:31
|
||||
model=trkdead.mod /id:32
|
||||
model=smldead.mod /id:78
|
||||
model=meddead.mod /id:34
|
||||
model=bigdead.mod /id:33
|
||||
model=msldead.mod /id:79
|
||||
model=twrdead.mod /id:80
|
||||
//
|
||||
// Ballistic Ammo
|
||||
//
|
||||
model=projtile.mod /id:35
|
||||
model=srm.mod /id:36
|
||||
model=lrm.mod /id:37
|
||||
//
|
||||
// Scenario Role Model Files
|
||||
//
|
||||
//model=convoy.mod /id:38
|
||||
model=dfltrole.mod /id:39
|
||||
//model=attacker.mod /id:40
|
||||
//model=defender.mod /id:41
|
||||
//model=decoy.mod /id:42
|
||||
//model=hostage.mod /id:43
|
||||
//model=ambssdor.mod /id:44
|
||||
model=NoReturn.mod /id:112
|
||||
//
|
||||
// Mech Model Files
|
||||
//
|
||||
model=mechalrm.mod /id:83
|
||||
//
|
||||
|
||||
model=madcat.mod /id:72
|
||||
model=mad1.mod /id:118
|
||||
model=loki.mod /id:45
|
||||
model=lok1.mod /id:119
|
||||
model=thor.mod /id:46
|
||||
model=thr1.mod /id:115
|
||||
model=blkhawk.mod /id:47
|
||||
model=bhk1.mod /id:116
|
||||
model=owens.mod /id:48
|
||||
model=vulture.mod /id:73
|
||||
model=vul1.mod /id:117
|
||||
model=avatar.mod /id:110
|
||||
model=ava1.mod /id:114
|
||||
model=sunder.mod /id:111
|
||||
|
||||
|
||||
//model=firstrtr.mod
|
||||
//model=blkjack.mod
|
||||
//model=raptor.mod
|
||||
//model=wpnmech.mod
|
||||
//model=strider.mod
|
||||
//
|
||||
// Camera Model File
|
||||
//
|
||||
model=camera.mod /id:49
|
||||
//
|
||||
// Cultural Icons (stuff what can blow up)
|
||||
//
|
||||
model=tt1.mod /id:50
|
||||
model=tt2.mod /id:51
|
||||
model=snh.mod /id:52
|
||||
model=trk1.mod /id:53
|
||||
model=trk3.mod /id:54
|
||||
model=trk4.mod /id:55
|
||||
model=bpip1.mod /id:56
|
||||
model=bac1.mod /id:57
|
||||
model=awwlk1.mod /id:58
|
||||
model=adwlk1.mod /id:59
|
||||
model=adwlk2.mod /id:60
|
||||
model=adwlk3.mod /id:61
|
||||
model=arban1.mod /id:62
|
||||
model=arban2.mod /id:63
|
||||
model=arban3.mod /id:64
|
||||
model=arban4.mod /id:65
|
||||
model=arban5.mod /id:66
|
||||
model=arban6.mod /id:67
|
||||
model=bwlk1.mod /id:68
|
||||
model=bdet4.mod /id:69
|
||||
model=hn1.mod /id:85
|
||||
model=pdsh.mod /id:86
|
||||
model=sl2.mod /id:87
|
||||
model=twr.mod /id:88
|
||||
model=plit.mod /id:89
|
||||
model=gnr.mod /id:90
|
||||
model=tnt.mod /id:91
|
||||
model=bnk.mod /id:92
|
||||
model=msl.mod /id:93
|
||||
model=crt.mod /id:94
|
||||
model=hut.mod /id:95
|
||||
model=ft1.mod /id:96
|
||||
model=ft2.mod /id:97
|
||||
model=wst.mod /id:98
|
||||
model=mslg.mod /id:99
|
||||
model=fp0.mod /id:100
|
||||
model=fp1.mod /id:101
|
||||
model=fp2.mod /id:102
|
||||
model=fp3.mod /id:103
|
||||
model=hc1.mod /id:104
|
||||
model=hc2.mod /id:105
|
||||
model=hwz.mod /id:106
|
||||
//model=jax1.mod /id:107
|
||||
//model=jax2.mod /id:108
|
||||
model=ab07.mod /id:109
|
||||
model=apc.mod /id:141
|
||||
model=armrmovr.mod /id:142
|
||||
model=bulldog.mod /id:143
|
||||
model=comtruck.mod /id:123
|
||||
model=coolant.mod /id:124
|
||||
model=dozer.mod /id:125
|
||||
model=harasser.mod /id:126
|
||||
model=hummer.mod /id:127
|
||||
model=lrmcarry.mod /id:128
|
||||
model=mechmovr.mod /id:129
|
||||
model=rommel.mod /id:130
|
||||
model=semi.mod /id:131
|
||||
model=semirig.mod /id:132
|
||||
model=srmcarry.mod /id:133
|
||||
model=striker.mod /id:134
|
||||
model=swiftwnd.mod /id:135
|
||||
model=bld03.mod /id:136
|
||||
model=bld04.mod /id:137
|
||||
model=bld20.mod /id:138
|
||||
model=bld24.mod /id:139
|
||||
model=bld26.mod /id:140
|
||||
model=tree.mod /id:144
|
||||
model=calp.mod /id:146
|
||||
model=calpb.mod /id:147
|
||||
model=dish.mod /id:148
|
||||
//
|
||||
// Maps
|
||||
//
|
||||
map=arena1.map /id:70
|
||||
map=arena2.map /id:84
|
||||
//map=polar1.map /id:71
|
||||
//map=polar2.map
|
||||
map=polar3.map /id:81
|
||||
map=polar4.map /id:82
|
||||
map=rav.map /id:120
|
||||
map=grass.map /id:121
|
||||
map=dbase.map /id:122
|
||||
//map=test.map /id:145
|
||||
zone=all.zne
|
||||
|
||||
[zones]
|
||||
zone=all.zne
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
!ifndef BC_ROOT
|
||||
!error BC_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef MUNGA_ROOT
|
||||
!error MUNGA_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef DPL_ROOT
|
||||
!error DPL_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef SOS_ROOT
|
||||
!error SOS_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef NETNUB_ROOT
|
||||
!error NETNUB_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef BT_ROOT
|
||||
!error BT_ROOT macro is not defined
|
||||
!endif
|
||||
|
||||
INCLUDE_PATH = $(BTL4_ROOT);$(BT_ROOT);$(MUNGAL4_ROOT);$(DPL_ROOT);$(DPL_ROOT)\dvs;$(DPL_ROOT)\dpl;$(SOS_ROOT)\bc4;$(NETNUB_ROOT);$(MUNGA_ROOT);$(BC_ROOT)\include
|
||||
LIBRARY_PATH = $(BTL4_ROOT)\$(BTYPE);$(BT_ROOT)\$(BTYPE);$(MUNGAL4_ROOT)\$(BTYPE);$(DPL_ROOT);$(MUNGA_ROOT)\$(BTYPE);$(BC_ROOT)\lib
|
||||
@@ -0,0 +1,12 @@
|
||||
#if !defined(BTL4_HPP)
|
||||
# define BTL4_HPP
|
||||
|
||||
# if !defined(BT_HPP)
|
||||
# include <bt.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(MUNGAL4_HPP)
|
||||
# include <mungal4.hpp>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
.autodepend
|
||||
.cacheautodepend
|
||||
.suffixes: .cpp
|
||||
|
||||
!ifndef BTYPE
|
||||
!error BTYPE macro not supplied
|
||||
!endif
|
||||
|
||||
!ifndef BPATH
|
||||
!error BPATH macro not supplied
|
||||
!endif
|
||||
|
||||
!include make.cfg
|
||||
!include $(BPATH)
|
||||
|
||||
TARGET_DIR = $(BTL4_ROOT)\$(BTYPE)
|
||||
TARGET_PATH = $(TARGET_DIR)\\
|
||||
.path.obj = $(TARGET_DIR)
|
||||
.path.lib = $(LIBRARY_PATH)
|
||||
|
||||
LIB_PREFIX = -+$(TARGET_DIR)\\
|
||||
|
||||
CFG_FILE = $(TARGET_DIR)\$(BTYPE).cfg
|
||||
HEADER_FILE = btl4$(BTYPE).csm
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Library targets
|
||||
#
|
||||
all:\
|
||||
$(CFG_FILE) $(TARGET_DIR)\btl4$(BTYPE).exe $(TARGET_DIR)\btl4tool.exe\
|
||||
$(TARGET_DIR)\mechbld.exe
|
||||
|
||||
clean:
|
||||
del $(TARGET_DIR)\*.obj
|
||||
del $(TARGET_DIR)\*.lib
|
||||
del $(TARGET_DIR)\*.exe
|
||||
del $(TARGET_DIR)\*.bak
|
||||
del $(TARGET_DIR)\*.cfg
|
||||
|
||||
assemble:
|
||||
@echo No assembly targets
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
#
|
||||
!include $(BTYPE).mak
|
||||
|
||||
!ifndef STARTUP_OBJ
|
||||
!error STARTUP_OBJ macro is not defined
|
||||
!endif
|
||||
|
||||
!ifndef STARTUP_LIBS
|
||||
!error STARTUP_LIBS macro is not defined
|
||||
!endif
|
||||
|
||||
{$(INCLUDE_PATH)}.cpp{$(TARGET_DIR)}.obj:
|
||||
$(BCC) @$(CFG_FILE) $< >>error.log
|
||||
|
||||
{$(INCLUDE_PATH)}.c{$(TARGET_DIR)}.obj:
|
||||
$(BCC) @$(CFG_FILE) $< >>error.log
|
||||
|
||||
{$(BTL4_ROOT)}.asm{$(TARGET_DIR)}.obj:
|
||||
tasm32 -ml $(TASM_OPTIONS) -i$(BTL4_ROOT) $<,$@ >>error.log
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Game
|
||||
#
|
||||
$(TARGET_DIR)\btl4$(BTYPE).exe: \
|
||||
$(BTL4_ROOT)\btl4.mak l4stub.lib stub.lib $(TARGET_DIR)\btl4.lib\
|
||||
bt.lib mungal4.lib munga.lib btl4.obj $(BTYPE).mak\
|
||||
$(DPL_ROOT)\libdpl.lib
|
||||
tlink32 @&&|
|
||||
$(LINK_OPTIONS) +
|
||||
$(STARTUP_OBJ)+
|
||||
$(TARGET_DIR)\btl4.obj
|
||||
$<,$*
|
||||
l4stub.lib+
|
||||
stub.lib+
|
||||
munga.lib+
|
||||
mungal4.lib+
|
||||
$(DPL_ROOT)\libdpl.lib+
|
||||
bt.lib+
|
||||
$(TARGET_DIR)\btl4.lib+
|
||||
$(STARTUP_LIBS)
|
||||
| >>error.log
|
||||
|
||||
btl4.obj: $(CFG_FILE)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Tools
|
||||
#
|
||||
$(TARGET_DIR)\btl4tool.exe: \
|
||||
$(BTL4_ROOT)\btl4.mak l4stub.lib stub.lib $(TARGET_DIR)\btl4.lib\
|
||||
bt.lib mungal4.lib munga.lib btl4tool.obj $(BTYPE).mak\
|
||||
$(DPL_ROOT)\libdpl.lib
|
||||
tlink32 @&&|
|
||||
$(LINK_OPTIONS) +
|
||||
$(STARTUP_OBJ)+
|
||||
$(TARGET_DIR)\btl4tool.obj
|
||||
$<,$*
|
||||
l4stub.lib+
|
||||
stub.lib+
|
||||
munga.lib+
|
||||
mungal4.lib+
|
||||
$(DPL_ROOT)\libdpl.lib+
|
||||
bt.lib+
|
||||
$(TARGET_DIR)\btl4.lib+
|
||||
$(STARTUP_LIBS)
|
||||
| >>error.log
|
||||
|
||||
btl4tool.obj: $(CFG_FILE)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Mech builder
|
||||
#
|
||||
$(TARGET_DIR)\mechbld.exe:\
|
||||
$(BTL4_ROOT)\btl4.mak mechbld.obj stub.lib munga.lib $(BTYPE).mak
|
||||
tlink32 @&&|
|
||||
$(LINK_OPTIONS) +
|
||||
$(STARTUP_OBJ)+
|
||||
$(TARGET_DIR)\mechbld.obj
|
||||
$<,$*
|
||||
stub.lib+
|
||||
munga.lib+
|
||||
$(STARTUP_LIBS)
|
||||
| >>error.log
|
||||
|
||||
mechbld.obj: $(BCC_CONFIG) $(BTYPE).mak
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Battletech library
|
||||
#
|
||||
BTL4_OBJS = \
|
||||
?btl4mode.obj \
|
||||
?btl4rdr.obj \
|
||||
?btl4gaug.obj \
|
||||
?btl4gau2.obj \
|
||||
?btl4gau3.obj \
|
||||
?btl4grnd.obj \
|
||||
?btl4galm.obj \
|
||||
?btl4vid.obj \
|
||||
?btl4mppr.obj \
|
||||
?btl4arnd.obj \
|
||||
?btl4mssn.obj \
|
||||
?btl4app.obj \
|
||||
?btl4pb.obj
|
||||
|
||||
$(BTL4_OBJS:?=): $(CFG_FILE)
|
||||
|
||||
$(TARGET_DIR)\btl4.lib: $(BTL4_OBJS:?=) $(BTL4_ROOT)\btl4.mak
|
||||
tlib $@ $(LIB_OPTIONS) @&&|
|
||||
$(BTL4_OBJS:?=$(LIB_PREFIX))
|
||||
| >>error.log
|
||||
@@ -0,0 +1,88 @@
|
||||
//===========================================================================//
|
||||
// File: rp4lbe4.hh //
|
||||
// Project: MUNGA Brick: Red Planet LBE Application //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4APP_HPP)
|
||||
# define BTL4APP_HPP
|
||||
|
||||
# if !defined(BTL4MPPR_HPP)
|
||||
# include <btl4mppr.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//###################### BTL4Application ##########################
|
||||
//##########################################################################
|
||||
|
||||
//##########################################################################
|
||||
//###################### RP4L4Application ############################
|
||||
//##########################################################################
|
||||
|
||||
class BTL4Application:
|
||||
public L4Application
|
||||
{
|
||||
public:
|
||||
BTL4Application(
|
||||
ResourceFile *resource_file,
|
||||
ClassID class_ID=L4ApplicationClassID,
|
||||
SharedData &shared_data=DefaultData
|
||||
);
|
||||
~BTL4Application();
|
||||
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
private:
|
||||
Registry*
|
||||
MakeRegistry();
|
||||
|
||||
VideoRenderer*
|
||||
MakeVideoRenderer();
|
||||
|
||||
AudioRenderer*
|
||||
MakeAudioRenderer();
|
||||
|
||||
GaugeRenderer*
|
||||
MakeGaugeRenderer();
|
||||
|
||||
ModeManager*
|
||||
MakeModeManager();
|
||||
|
||||
ControlsManager*
|
||||
MakeControlsManager();
|
||||
|
||||
Mission*
|
||||
MakeMission(
|
||||
NotationFile *notation_file,
|
||||
ResourceFile *resources
|
||||
);
|
||||
|
||||
Entity*
|
||||
MakeViewpointEntity(Entity::MakeMessage *);
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Message Support
|
||||
//
|
||||
private:
|
||||
static const HandlerEntry MessageHandlerEntries[];
|
||||
|
||||
protected:
|
||||
static MessageHandlerSet MessageHandlers;
|
||||
|
||||
void
|
||||
RunMissionMessageHandler(RunMissionMessage *message);
|
||||
void
|
||||
StopMissionMessageHandler(StopMissionMessage *message);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,185 @@
|
||||
//===========================================================================//
|
||||
// File: btl4arnd.cc //
|
||||
// Project: MUNGA Brick: Audio Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/30/95 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <btl4.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTL4ARND_HPP)
|
||||
# include <btl4arnd.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(JMOVER_HPP)
|
||||
# include <jmover.hpp>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4AudioHead ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
BTL4AudioHead::BTL4AudioHead():
|
||||
earToWorld(LinearMatrix::Identity)
|
||||
{
|
||||
useEyepointSegment = False;
|
||||
eyepointSegment = NULL;
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
BTL4AudioHead::~BTL4AudioHead()
|
||||
{
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
BTL4AudioHead::LinkToEntity(Entity *entity)
|
||||
{
|
||||
Check(this);
|
||||
Check(entity);
|
||||
|
||||
//
|
||||
// Call inherited method
|
||||
//
|
||||
AudioHead::LinkToEntity(entity);
|
||||
|
||||
#if 0
|
||||
//
|
||||
// Find segment containing eyepoint
|
||||
//
|
||||
JointedMover *jointed_mover;
|
||||
|
||||
jointed_mover = Cast_Object(JointedMover*, entity);
|
||||
eyepointSegment = jointed_mover->GetSegment("siteeyepoint");
|
||||
Check(eyepointSegment);
|
||||
|
||||
CalculateEarToWorld();
|
||||
#else
|
||||
useEyepointSegment = False;
|
||||
if (entity->IsDerivedFrom(JointedMover::ClassDerivations))
|
||||
{
|
||||
//
|
||||
// Find segment containing eyepoint
|
||||
//
|
||||
JointedMover *jointed_mover;
|
||||
|
||||
jointed_mover = Cast_Object(JointedMover*, entity);
|
||||
if ((eyepointSegment = jointed_mover->GetSegment("siteeyepoint")) != NULL)
|
||||
{
|
||||
Check(eyepointSegment);
|
||||
useEyepointSegment = True;
|
||||
CalculateEarToWorld();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
BTL4AudioHead::CalculateEarToWorld()
|
||||
{
|
||||
Check(this);
|
||||
|
||||
if (useEyepointSegment)
|
||||
{
|
||||
Verify(GetHeadEntity()->IsDerivedFrom(JointedMover::ClassDerivations));
|
||||
JointedMover *jointed_mover = Cast_Object(JointedMover*, GetHeadEntity());
|
||||
//
|
||||
// Get the ear transform
|
||||
//
|
||||
jointed_mover->GetSegmentToWorld(*eyepointSegment, &earToWorld);
|
||||
}
|
||||
else
|
||||
{
|
||||
earToWorld = AudioHead::GetEarToWorld();
|
||||
}
|
||||
Check(&earToWorld);
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
BTL4AudioHead::Execute()
|
||||
{
|
||||
Check(this);
|
||||
AudioHead::Execute();
|
||||
CalculateEarToWorld();
|
||||
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
LinearMatrix
|
||||
BTL4AudioHead::GetEarToWorld()
|
||||
{
|
||||
Check(this);
|
||||
Check_Fpu();
|
||||
return earToWorld;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4AudioRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
BTL4AudioRenderer::BTL4AudioRenderer(
|
||||
RendererRate render_rate,
|
||||
Logical mission_review_mode
|
||||
):
|
||||
L4AudioRenderer(
|
||||
render_rate,
|
||||
mission_review_mode
|
||||
)
|
||||
{
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
BTL4AudioRenderer::~BTL4AudioRenderer()
|
||||
{
|
||||
Check_Fpu();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
AudioHead*
|
||||
BTL4AudioRenderer::MakeAudioHead()
|
||||
{
|
||||
Check_Fpu();
|
||||
return new BTL4AudioHead;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
//===========================================================================//
|
||||
// File: btl4arnd.hh //
|
||||
// Project: MUNGA Brick: Audio Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/30/95 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4ARND_HPP)
|
||||
# define BTL4ARND_HPP
|
||||
|
||||
# if !defined(L4AUDRND_HPP)
|
||||
# include <l4audrnd.hpp>
|
||||
# endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4AudioHead ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class Segment;
|
||||
|
||||
class BTL4AudioHead:
|
||||
public AudioHead
|
||||
{
|
||||
public:
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
// Construction, Destruction, Testing
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
BTL4AudioHead();
|
||||
~BTL4AudioHead();
|
||||
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// LinkToEntity
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
void
|
||||
LinkToEntity(Entity *entity);
|
||||
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// GetEarToWorld
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
LinearMatrix
|
||||
GetEarToWorld();
|
||||
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// Execute
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
void
|
||||
Execute();
|
||||
|
||||
private:
|
||||
//
|
||||
//--------------------------------------------------------------------------
|
||||
// Private methods
|
||||
//--------------------------------------------------------------------------
|
||||
//
|
||||
void
|
||||
CalculateEarToWorld();
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------------
|
||||
// Private Data
|
||||
//--------------------------------------------------------------------------
|
||||
//
|
||||
Logical
|
||||
useEyepointSegment;
|
||||
EntitySegment*
|
||||
eyepointSegment;
|
||||
LinearMatrix
|
||||
earToWorld;
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4AudioRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class BTL4AudioRenderer:
|
||||
public L4AudioRenderer
|
||||
{
|
||||
public:
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
// Construction, Destruction, Testing
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
BTL4AudioRenderer(
|
||||
RendererRate render_rate,
|
||||
Logical mission_review_mode
|
||||
);
|
||||
~BTL4AudioRenderer();
|
||||
|
||||
private:
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// MakeAudioHead
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
AudioHead*
|
||||
MakeAudioHead();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
//===========================================================================//
|
||||
// File: gaugalrm.hpp //
|
||||
// Project: MUNGA Brick: Gauge Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 02/22/96 CPB Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1996, Virtual World Entertainment, Inc. All rights reserved //
|
||||
// PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4GALM_HPP)
|
||||
# define BTL4GALM_HPP
|
||||
|
||||
# if !defined(GAUGALRM_HPP)
|
||||
# include "gaugalrm.hpp"
|
||||
# endif
|
||||
|
||||
//#######################################################################
|
||||
// BTL4GaugeAlarmManager
|
||||
//#######################################################################
|
||||
class BTL4GaugeAlarmManager :
|
||||
public GaugeAlarmManager
|
||||
{
|
||||
public:
|
||||
Logical
|
||||
CreateGaugeAlarmStreamItem(
|
||||
MemoryStream *mem_stream,
|
||||
const char *alarm_name,
|
||||
const char *alarm_data
|
||||
);
|
||||
void
|
||||
ReadGaugeAlarmStreamItem(
|
||||
GaugeAlarm *alarm,
|
||||
Entity *the_entity,
|
||||
Subsystem *the_subsystem,
|
||||
Enumeration the_condition,
|
||||
MemoryStream *mem_stream
|
||||
);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,48 @@
|
||||
//===========================================================================//
|
||||
// File: rpl4grnd.hh //
|
||||
// Project: MUNGA Brick: Gauge Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 02/13/95 CPB Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. All rights reserved //
|
||||
// PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4GRND_HPP)
|
||||
# define BTL4GRND_HPP
|
||||
|
||||
# if !defined(L4GREND_HPP)
|
||||
# include <l4grend.hpp>
|
||||
# endif
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4GaugeRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class BTL4GaugeRenderer:
|
||||
public L4GaugeRenderer
|
||||
{
|
||||
public:
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
// Construction, Destruction, Testing
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
BTL4GaugeRenderer();
|
||||
~BTL4GaugeRenderer();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
void
|
||||
NotifyOfNewInterestingEntity(Entity *entity);
|
||||
void
|
||||
NotifyOfBecomingUninterestingEntity(Entity *entity);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
//==========================================================================//
|
||||
// File: BTMODE.CPP //
|
||||
// Project: MUNGA Brick: Controls Manager //
|
||||
// Contents: Interface specification for BT LBE4 Controls //
|
||||
//--------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ----------------------------------------------------------//
|
||||
// 02/13/96 CPB Built from CONTROLS.CPP //
|
||||
//--------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1996, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//==========================================================================//
|
||||
|
||||
#include <btl4.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(BTL4MODE_HPP)
|
||||
# include <btl4mode.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
# define Test_Tell(n) DEBUG_STREAM << n
|
||||
#else
|
||||
# define Test_Tell(n)
|
||||
#endif
|
||||
|
||||
struct ModeLookup
|
||||
{
|
||||
const char *name;
|
||||
ModeMask modeMask;
|
||||
};
|
||||
|
||||
static ModeLookup
|
||||
mode_lookup[] =
|
||||
{
|
||||
{"ModeMFD1Quad", BTL4ModeManager::ModeMFD1Quad},
|
||||
{"ModeMFD1Eng1", BTL4ModeManager::ModeMFD1Eng1},
|
||||
{"ModeMFD1Eng2", BTL4ModeManager::ModeMFD1Eng2},
|
||||
{"ModeMFD1Eng3", BTL4ModeManager::ModeMFD1Eng3},
|
||||
{"ModeMFD1Eng4", BTL4ModeManager::ModeMFD1Eng4},
|
||||
{"ModeMFD2Quad", BTL4ModeManager::ModeMFD2Quad},
|
||||
{"ModeMFD2Eng1", BTL4ModeManager::ModeMFD2Eng1},
|
||||
{"ModeMFD2Eng2", BTL4ModeManager::ModeMFD2Eng2},
|
||||
{"ModeMFD2Eng3", BTL4ModeManager::ModeMFD2Eng3},
|
||||
{"ModeMFD2Eng4", BTL4ModeManager::ModeMFD2Eng4},
|
||||
{"ModeMFD3Quad", BTL4ModeManager::ModeMFD3Quad},
|
||||
{"ModeMFD3Eng1", BTL4ModeManager::ModeMFD3Eng1},
|
||||
{"ModeMFD3Eng2", BTL4ModeManager::ModeMFD3Eng2},
|
||||
{"ModeMFD3Eng3", BTL4ModeManager::ModeMFD3Eng3},
|
||||
{"ModeMFD3Eng4", BTL4ModeManager::ModeMFD3Eng4},
|
||||
{"ModeMapping", BTL4ModeManager::ModeMapping},
|
||||
{"ModeNonMapping", BTL4ModeManager::ModeNonMapping},
|
||||
{"ModeIntercom", BTL4ModeManager::ModeIntercom},
|
||||
{"ModeSecondaryDamage", BTL4ModeManager::ModeSecondaryDamage},
|
||||
{"ModeSecondaryCritical", BTL4ModeManager::ModeSecondaryCritical},
|
||||
{"ModeSecondaryHeat", BTL4ModeManager::ModeSecondaryHeat},
|
||||
{"ModeEject", BTL4ModeManager::ModeEject},
|
||||
{"ModePlasmaDisplay", BTL4ModeManager::ModePlasmaDisplay},
|
||||
|
||||
{"ModeInitial", BTL4ModeManager::ModeInitial},
|
||||
{"ModeNonConfig", BTL4ModeManager::ModeNonConfig},
|
||||
{"ModeMFD1NonQuad", BTL4ModeManager::ModeMFD1NonQuad},
|
||||
{"ModeMFD1All", BTL4ModeManager::ModeMFD1All},
|
||||
{"ModeMFD2NonQuad", BTL4ModeManager::ModeMFD2NonQuad},
|
||||
{"ModeMFD2All", BTL4ModeManager::ModeMFD2All},
|
||||
{"ModeMFD3NonQuad", BTL4ModeManager::ModeMFD3NonQuad},
|
||||
{"ModeMFD3All", BTL4ModeManager::ModeMFD3All},
|
||||
{"ModeSecondaryAll", BTL4ModeManager::ModeSecondaryAll},
|
||||
{ NULL, (ModeMask)0}
|
||||
};
|
||||
|
||||
Logical
|
||||
BTL4ModeManager::ModeStringLookup(
|
||||
const char *name,
|
||||
ModeMask *returned_value
|
||||
)
|
||||
{
|
||||
Check(this);
|
||||
Check_Pointer(name);
|
||||
Check_Pointer(returned_value);
|
||||
//----------------------------------------
|
||||
// Search table for match
|
||||
//----------------------------------------
|
||||
ModeLookup
|
||||
*lookup;
|
||||
|
||||
for(lookup=mode_lookup; lookup->name!=NULL; ++lookup)
|
||||
{
|
||||
if (stricmp(name, lookup->name) == 0)
|
||||
{
|
||||
*returned_value = lookup->modeMask;
|
||||
Check_Fpu();
|
||||
return True;
|
||||
}
|
||||
}
|
||||
//----------------------------------------
|
||||
// Not found here, check next level down.
|
||||
//----------------------------------------
|
||||
Check_Fpu();
|
||||
return ModeManager::ModeStringLookup(name, returned_value);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
//===========================================================================//
|
||||
// File: btl4mode.hpp //
|
||||
// Project: Battletech //
|
||||
// Contents: BTL4 controls //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 02/13/96 CPB Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1996, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4MODE_HPP)
|
||||
# define BTL4MODE_HPP
|
||||
|
||||
# if !defined(MODE_HPP)
|
||||
# include <mode.hpp>
|
||||
# endif
|
||||
|
||||
|
||||
//#########################################################################
|
||||
//########################## BTL4ControlsManager ##########################
|
||||
//#########################################################################
|
||||
class BTL4ModeManager:
|
||||
public ModeManager
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
};
|
||||
//-------------------------------------------------------------------
|
||||
// Construction/destruction/verification
|
||||
//-------------------------------------------------------------------
|
||||
public:
|
||||
BTL4ModeManager(ModeMask initial_mask):
|
||||
ModeManager(initial_mask)
|
||||
{}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Mode control
|
||||
//-------------------------------------------------------------------
|
||||
enum
|
||||
{
|
||||
ModeMFD1QuadBit = ModeManager::nextModeBit,
|
||||
ModeMFD1Eng1Bit,
|
||||
ModeMFD1Eng2Bit,
|
||||
ModeMFD1Eng3Bit,
|
||||
ModeMFD1Eng4Bit,
|
||||
|
||||
ModeMFD2QuadBit,
|
||||
ModeMFD2Eng1Bit,
|
||||
ModeMFD2Eng2Bit,
|
||||
ModeMFD2Eng3Bit,
|
||||
ModeMFD2Eng4Bit,
|
||||
|
||||
ModeMFD3QuadBit,
|
||||
ModeMFD3Eng1Bit,
|
||||
ModeMFD3Eng2Bit,
|
||||
ModeMFD3Eng3Bit,
|
||||
ModeMFD3Eng4Bit,
|
||||
|
||||
ModeMappingBit,
|
||||
ModeNonMappingBit,
|
||||
|
||||
ModeIntercomBit,
|
||||
|
||||
ModeSecondaryDamageBit,
|
||||
ModeSecondaryCriticalBit,
|
||||
ModeSecondaryHeatBit,
|
||||
|
||||
ModeEjectBit,
|
||||
|
||||
ModePlasmaDisplayBit,
|
||||
};
|
||||
enum
|
||||
{
|
||||
// These 5 mutually exclusive
|
||||
ModeMFD1Quad = 1L<<ModeMFD1QuadBit,
|
||||
ModeMFD1Eng1 = 1L<<ModeMFD1Eng1Bit,
|
||||
ModeMFD1Eng2 = 1L<<ModeMFD1Eng2Bit,
|
||||
ModeMFD1Eng3 = 1L<<ModeMFD1Eng3Bit,
|
||||
ModeMFD1Eng4 = 1L<<ModeMFD1Eng4Bit,
|
||||
|
||||
// These 5 mutually exclusive
|
||||
ModeMFD2Quad = 1L<<ModeMFD2QuadBit,
|
||||
ModeMFD2Eng1 = 1L<<ModeMFD2Eng1Bit,
|
||||
ModeMFD2Eng2 = 1L<<ModeMFD2Eng2Bit,
|
||||
ModeMFD2Eng3 = 1L<<ModeMFD2Eng3Bit,
|
||||
ModeMFD2Eng4 = 1L<<ModeMFD2Eng4Bit,
|
||||
|
||||
// These 5 mutually exclusive
|
||||
ModeMFD3Quad = 1L<<ModeMFD3QuadBit,
|
||||
ModeMFD3Eng1 = 1L<<ModeMFD3Eng1Bit,
|
||||
ModeMFD3Eng2 = 1L<<ModeMFD3Eng2Bit,
|
||||
ModeMFD3Eng3 = 1L<<ModeMFD3Eng3Bit,
|
||||
ModeMFD3Eng4 = 1L<<ModeMFD3Eng4Bit,
|
||||
|
||||
// These two mutually exclusive
|
||||
ModeMapping = 1L<<ModeMappingBit,
|
||||
ModeNonMapping= 1L<<ModeNonMappingBit,
|
||||
|
||||
ModeIntercom = 1L<<ModeIntercomBit,
|
||||
|
||||
// These three mutually exclusive
|
||||
ModeSecondaryDamage = 1L<<ModeSecondaryDamageBit,
|
||||
ModeSecondaryCritical= 1L<<ModeSecondaryCriticalBit,
|
||||
ModeSecondaryHeat = 1L<<ModeSecondaryHeatBit,
|
||||
|
||||
ModeEject = 1L<<ModeEjectBit,
|
||||
ModePlasmaDisplay = 1L<<ModePlasmaDisplayBit
|
||||
};
|
||||
|
||||
// Useful combinations
|
||||
enum
|
||||
{
|
||||
ModeInitial =
|
||||
ModeMFD1Quad|ModeMFD2Quad|ModeMFD3Quad|ModeNonMapping|
|
||||
ModeSecondaryDamage,
|
||||
|
||||
ModeNonConfig =
|
||||
ModeNonMapping,
|
||||
|
||||
ModeMFD1NonQuad =
|
||||
ModeMFD1Eng1|ModeMFD1Eng2|ModeMFD1Eng3|ModeMFD1Eng4,
|
||||
|
||||
ModeMFD1All =
|
||||
ModeMFD1Quad|ModeMFD1NonQuad,
|
||||
|
||||
ModeMFD2NonQuad =
|
||||
ModeMFD2Eng1|ModeMFD2Eng2|ModeMFD2Eng3|ModeMFD2Eng4,
|
||||
|
||||
ModeMFD2All =
|
||||
ModeMFD2Quad|ModeMFD2NonQuad,
|
||||
|
||||
ModeMFD3NonQuad =
|
||||
ModeMFD3Eng1|ModeMFD3Eng2|ModeMFD3Eng3|ModeMFD3Eng4,
|
||||
|
||||
ModeMFD3All =
|
||||
ModeMFD3Quad|ModeMFD3NonQuad,
|
||||
|
||||
ModeSecondaryAll =
|
||||
ModeSecondaryDamage|ModeSecondaryCritical|ModeSecondaryHeat
|
||||
};
|
||||
|
||||
Logical // defined as virtual in MODE.HPP
|
||||
ModeStringLookup(const char *name, ModeMask *returned_value);
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
//===========================================================================//
|
||||
// File: rpl4mssn.hpp //
|
||||
// Project: MUNGA Brick: //
|
||||
// Contents: Interface specification for missions //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 04/07/95 ECH Initial coding. //
|
||||
// 09/12/95 JM Derived from L4Mission //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4MSSN_HPP)
|
||||
# define BTL4MSSN_HPP
|
||||
|
||||
# if !defined(BTMSSN_HPP)
|
||||
# include <btmssn.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//########################### BTL4Mission ############################
|
||||
//##########################################################################
|
||||
|
||||
class BTL4Mission:
|
||||
public BTMission
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
BTL4Mission(
|
||||
NotationFile *notation_file,
|
||||
ResourceFile *resources
|
||||
);
|
||||
~BTL4Mission();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
void
|
||||
SetPlayerData(NotationFile *notation_file);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,116 @@
|
||||
//===========================================================================//
|
||||
// File: rp4lbe4.hh //
|
||||
// Project: MUNGA Brick: Red Planet LBE Application //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4PB_HPP)
|
||||
# define BTL4PB_HPP
|
||||
|
||||
# if !defined(BTL4APP_HPP)
|
||||
# include <btl4app.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(L4SPLR_HPP)
|
||||
# include <l4splr.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//####################### RPSpoolerTask ##############################
|
||||
//##########################################################################
|
||||
|
||||
class BTSpoolerTask:
|
||||
public SpoolerTask
|
||||
{
|
||||
public:
|
||||
BTSpoolerTask();
|
||||
~BTSpoolerTask();
|
||||
|
||||
void
|
||||
DispatchPacket(NetworkPacket *packet);
|
||||
long
|
||||
GetTimeBias();
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//#################### RPPlaybackApplication ##########################
|
||||
//##########################################################################
|
||||
|
||||
class BTL4PlaybackApplication:
|
||||
public BTL4Application
|
||||
{
|
||||
public:
|
||||
BTL4PlaybackApplication(
|
||||
ResourceFile *resource,
|
||||
SpoolFile *spool_file = NULL
|
||||
);
|
||||
~BTL4PlaybackApplication();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
void
|
||||
SetSpoolFile(SpoolFile *spool_file)
|
||||
{spoolFile = spool_file;}
|
||||
|
||||
MissionReviewApplicationManager*
|
||||
GetApplicationManager()
|
||||
{
|
||||
return
|
||||
(MissionReviewApplicationManager*)
|
||||
Application::GetApplicationManager();
|
||||
}
|
||||
|
||||
long
|
||||
GetTimeBias()
|
||||
{return timeBias;}
|
||||
|
||||
void
|
||||
DispatchPacket(NetworkPacket *packet);
|
||||
|
||||
protected:
|
||||
NetworkManager*
|
||||
MakeNetworkManager();
|
||||
|
||||
long
|
||||
timeBias;
|
||||
|
||||
void
|
||||
Initialize();
|
||||
void
|
||||
LoadBackgroundTasks();
|
||||
Logical
|
||||
ExecuteForeground(
|
||||
Time start_of_frame,
|
||||
Scalar frame_duration
|
||||
);
|
||||
void
|
||||
ExecuteBackgroundTask();
|
||||
|
||||
static const HandlerEntry
|
||||
MessageHandlerEntries[];
|
||||
static MessageHandlerSet
|
||||
MessageHandlers;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Shared Data Support
|
||||
//
|
||||
public:
|
||||
static Derivation ClassDerivations;
|
||||
static SharedData DefaultData;
|
||||
|
||||
void
|
||||
RunMissionMessageHandler(RunMissionMessage *message);
|
||||
void
|
||||
StopMissionMessageHandler(StopMissionMessage *message);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,238 @@
|
||||
//===========================================================================//
|
||||
// File: btl4gaug.hh //
|
||||
// Project: MUNGA Brick: Gauge Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 09/13/95 CPB Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. All rights reserved //
|
||||
// PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BTL4RDR_HPP)
|
||||
# define BTL4RDR_HPP
|
||||
|
||||
# if !defined(SLOT_HPP)
|
||||
# include <slot.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(L4GREND_HPP)
|
||||
# include <l4grend.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(L4GAUGE_HPP)
|
||||
# include <l4gauge.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(ROTATION_HPP)
|
||||
# include <rotation.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(RANDOM_HPP)
|
||||
# include <random.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(POINT3D_HPP)
|
||||
# include "point3d.hpp"
|
||||
# endif
|
||||
|
||||
# if !defined(HEAT_HPP)
|
||||
# include <heat.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(POWERSUB_HPP)
|
||||
# include <powersub.hpp>
|
||||
# endif
|
||||
|
||||
struct ShadowRecord
|
||||
{
|
||||
int distance;
|
||||
};
|
||||
|
||||
class MapDisplay;
|
||||
|
||||
class MapName SIGNATURED // Used exclusively by MapDisplay
|
||||
{
|
||||
friend class MapDisplay;
|
||||
|
||||
MapName()
|
||||
{}
|
||||
~MapName()
|
||||
{}
|
||||
|
||||
Logical
|
||||
TestInstance() const
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
protected:
|
||||
void
|
||||
ExtractFromEntity(
|
||||
Entity *entity,
|
||||
AffineMatrix &worldToView,
|
||||
Entity *exclude_entity=NULL,
|
||||
Entity *hotbox_entity=NULL
|
||||
);
|
||||
void
|
||||
Draw(
|
||||
GraphicsView *graphics_view,
|
||||
int hotbox_color
|
||||
);
|
||||
|
||||
Point3D
|
||||
center;
|
||||
Vector3D
|
||||
direction;
|
||||
BitMap
|
||||
*nameBitmap;
|
||||
int
|
||||
color;
|
||||
Logical
|
||||
hotBoxed;
|
||||
};
|
||||
|
||||
class MapDisplay :
|
||||
public GraphicGauge
|
||||
{
|
||||
public:
|
||||
enum OffsetPosition
|
||||
{
|
||||
center,
|
||||
bottom
|
||||
};
|
||||
|
||||
static MethodDescription
|
||||
methodDescription;
|
||||
static Logical
|
||||
Make(
|
||||
int display_port_index,
|
||||
Vector2DOf<int> position,
|
||||
Entity *entity,
|
||||
GaugeRenderer *gauge_renderer
|
||||
);
|
||||
|
||||
MapDisplay(
|
||||
GaugeRate rate,
|
||||
ModeMask mode_mask,
|
||||
L4GaugeRenderer *renderer,
|
||||
unsigned int owner_ID,
|
||||
int graphics_port_number,
|
||||
|
||||
int left, int bottom,
|
||||
int right, int top,
|
||||
OffsetPosition offset_position,
|
||||
int view_width_in_degrees,
|
||||
int bg_color,
|
||||
int static_color,
|
||||
int hotbox_color,
|
||||
Scalar maximum_range,
|
||||
Entity *entity,
|
||||
Scalar *scale_value_pointer,
|
||||
Point3D **position_pointer,
|
||||
Quaternion **angle_pointer,
|
||||
Scalar *capabilities_ratio,
|
||||
Logical allow_rock_and_roll=False
|
||||
);
|
||||
|
||||
~MapDisplay();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
void
|
||||
ShowInstance(char *indent);
|
||||
void
|
||||
BecameActive();
|
||||
void
|
||||
Execute();
|
||||
|
||||
protected:
|
||||
void
|
||||
CalculateBounds();
|
||||
void
|
||||
EraseDisplay();
|
||||
void
|
||||
DrawDisplay();
|
||||
void
|
||||
BuildRadarShadow(AffineMatrix &worldToView);
|
||||
void
|
||||
DrawViewWedge();
|
||||
void
|
||||
DrawStatic(AffineMatrix &worldToView);
|
||||
void
|
||||
DrawMoving(AffineMatrix &worldToView);
|
||||
void
|
||||
DrawNames(AffineMatrix &worldToView);
|
||||
|
||||
enum
|
||||
{
|
||||
maximumNames = 16
|
||||
};
|
||||
|
||||
MapName
|
||||
nameArray[maximumNames];
|
||||
|
||||
OffsetPosition
|
||||
offsetPosition;
|
||||
Scalar
|
||||
currentScale;
|
||||
Point3D *
|
||||
currentPositionPointer;
|
||||
Quaternion *
|
||||
currentAngularPointer;
|
||||
Scalar
|
||||
currentCapabilitiesRatio;
|
||||
Scalar
|
||||
LODIndex,
|
||||
pixelsPerMeter,
|
||||
metersPerPixel,
|
||||
maximumRange,
|
||||
maximumDistanceSquared,
|
||||
xMin,
|
||||
yMin,
|
||||
zMin,
|
||||
xMax,
|
||||
yMax,
|
||||
zMax;
|
||||
|
||||
Point3D
|
||||
viewingPosition;
|
||||
Radian
|
||||
viewHorizontalRotation;
|
||||
Radian
|
||||
viewHalfHorizontalWidth;
|
||||
|
||||
AffineMatrix
|
||||
worldToView;
|
||||
|
||||
int
|
||||
operatingPhase,
|
||||
backgroundColor,
|
||||
staticColor,
|
||||
boxColor,
|
||||
halfWidth,
|
||||
halfHeight;
|
||||
|
||||
Logical
|
||||
operating,
|
||||
rockAndRoll,
|
||||
flashState;
|
||||
|
||||
GaugeEntityList
|
||||
staticEntityList,
|
||||
movingEntityList;
|
||||
|
||||
GraphicsViewRecord
|
||||
previousDrawing;
|
||||
|
||||
int
|
||||
halfViewWidthInUnits;
|
||||
|
||||
ShadowRecord
|
||||
*shadowTable;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#if !defined(BTL4VER_HPP)
|
||||
# define BTL4VER_HPP
|
||||
|
||||
# define MAJOR_DATA_VERSION 1
|
||||
# define RELEASE_VERSION 0
|
||||
# define MINOR_DATA_VERSION 6
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
SCC = This is a Source Code Control file
|
||||
|
||||
[BTL4.MAK]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT/BT_L4", ZOCAAAAA
|
||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
||||
@REM **************************************************************************
|
||||
@REM * BUILDRES.BAT - 11-11-96 cpb *
|
||||
@REM * This file is intended to simplify the development of BTL4 resources *
|
||||
@REM * on a Win95 system. It must be executed under MS-DOS (but NOT in a *
|
||||
@REM * "dos box": the current tools won't run at all under Win32)! *
|
||||
@REM * See the document "Modifying Resources" for more information. *
|
||||
@REM **************************************************************************
|
||||
@ECHO ON
|
||||
cd models
|
||||
@echo Building avatar... > ..\result.txt
|
||||
..\mechbld avatar.mch >> ..\result.txt
|
||||
@echo Building ava1... > ..\result.txt
|
||||
..\mechbld ava1.mch >> ..\result.txt
|
||||
@echo Building blkhawk... >> ..\result.txt
|
||||
..\mechbld blkhawk.mch >> ..\result.txt
|
||||
@echo Building bhk1... >> ..\result.txt
|
||||
..\mechbld bhk1.mch >> ..\result.txt
|
||||
@echo Building loki... >> ..\result.txt
|
||||
..\mechbld loki.mch >> ..\result.txt
|
||||
@echo Building Lok1... >> ..\result.txt
|
||||
..\mechbld lok1.mch >> ..\result.txt
|
||||
@echo Building madcat... >> ..\result.txt
|
||||
..\mechbld madcat.mch >> ..\result.txt
|
||||
@echo Building mad1... >> ..\result.txt
|
||||
..\mechbld mad1.mch >> ..\result.txt
|
||||
@echo Building owens... >> ..\result.txt
|
||||
..\mechbld owens.mch >> ..\result.txt
|
||||
@echo Building sunder... >> ..\result.txt
|
||||
..\mechbld sunder.mch >> ..\result.txt
|
||||
@echo Building thor... >> ..\result.txt
|
||||
..\mechbld thor.mch >> ..\result.txt
|
||||
@echo Building thr1... >> ..\result.txt
|
||||
..\mechbld thr1.mch >> ..\result.txt
|
||||
@echo Building vulture... >> ..\result.txt
|
||||
..\mechbld vulture.mch >> ..\result.txt
|
||||
@echo Building vul1... >> ..\result.txt
|
||||
..\mechbld vul1.mch >> ..\result.txt
|
||||
cd ..
|
||||
btl4tool -b btl4.bld >> result.txt
|
||||
call arcbt f . >> result.txt
|
||||
Binary file not shown.
@@ -0,0 +1,49 @@
|
||||
LINK_OPTIONS = -Tpe -ax -L$(LIBRARY_PATH) -v -x
|
||||
BCC = bcc32
|
||||
TASM_OPTIONS = -zi
|
||||
|
||||
STARTUP_OBJ = $(STARTUP_ROOT)\c0x32.obj
|
||||
STARTUP_LIBS = $(STARTUP_ROOT)\dpmi32.lib $(STARTUP_ROOT)\cw32.lib
|
||||
|
||||
LIB_OPTIONS = /P512
|
||||
|
||||
$(CFG_FILE): d0.mak make.cfg $(BPATH)
|
||||
copy &&|
|
||||
-DLAB_ONLY;LBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout
|
||||
-DTEST_CLASS=50
|
||||
-b
|
||||
-r
|
||||
-ff
|
||||
-AT
|
||||
-k-
|
||||
-N-
|
||||
-v
|
||||
-vi-
|
||||
-5
|
||||
-pc
|
||||
-a4
|
||||
-V
|
||||
-Jg
|
||||
-x-
|
||||
-RT-
|
||||
-O2
|
||||
-Ot
|
||||
-Oc
|
||||
-Og
|
||||
-O
|
||||
-Ol
|
||||
-Z
|
||||
-Ob
|
||||
-Oe
|
||||
-Oi
|
||||
-Om
|
||||
-Op
|
||||
-Ov
|
||||
-w
|
||||
-c
|
||||
-I$(INCLUDE_PATH)
|
||||
-H
|
||||
-H=$(HEADER_FILE)
|
||||
-Hc
|
||||
-n$(TARGET_DIR)
|
||||
| $(CFG_FILE)
|
||||
@@ -0,0 +1,33 @@
|
||||
LINK_OPTIONS = -Tpe -ax -L$(LIBRARY_PATH) -v -x
|
||||
BCC = bcc32
|
||||
TASM_OPTIONS = -zi
|
||||
|
||||
STARTUP_OBJ = $(STARTUP_ROOT)\c0x32.obj
|
||||
STARTUP_LIBS = $(STARTUP_ROOT)\dpmi32.lib $(STARTUP_ROOT)\cw32.lib
|
||||
|
||||
LIB_OPTIONS = /P512
|
||||
|
||||
$(CFG_FILE): d2s.mak make.cfg $(BPATH)
|
||||
copy &&|
|
||||
-DLAB_ONLY;LBE4;DEBUG_LEVEL=1;DEBUG_STREAM=cout
|
||||
-b
|
||||
-r-
|
||||
-ff
|
||||
-AT
|
||||
-v
|
||||
-5
|
||||
-pc
|
||||
-a4
|
||||
-V
|
||||
-Jg
|
||||
-x-
|
||||
-RT-
|
||||
-Od
|
||||
-w
|
||||
-c
|
||||
-I$(INCLUDE_PATH)
|
||||
-H
|
||||
-H=$(HEADER_FILE)
|
||||
-Hc
|
||||
-n$(TARGET_DIR)
|
||||
| $(CFG_FILE)
|
||||
@@ -0,0 +1,33 @@
|
||||
LINK_OPTIONS = -Tpe -ax -L$(LIBRARY_PATH) -v -x
|
||||
BCC = bcc32
|
||||
TASM_OPTIONS = -zi
|
||||
|
||||
STARTUP_OBJ = $(STARTUP_ROOT)\c0x32.obj
|
||||
STARTUP_LIBS = $(STARTUP_ROOT)\dpmi32.lib $(STARTUP_ROOT)\cw32.lib
|
||||
|
||||
LIB_OPTIONS = /P512
|
||||
|
||||
$(CFG_FILE): d2s.mak make.cfg $(BPATH)
|
||||
copy &&|
|
||||
-DLAB_ONLY;LBE4;DEBUG_LEVEL=2;DEBUG_STREAM=cout;DEBUG_NEW_ON;USE_SIGNATURE
|
||||
-b
|
||||
-r-
|
||||
-ff
|
||||
-AT
|
||||
-v
|
||||
-5
|
||||
-pc
|
||||
-a4
|
||||
-V
|
||||
-Jg
|
||||
-x-
|
||||
-RT-
|
||||
-Od
|
||||
-w
|
||||
-c
|
||||
-I$(INCLUDE_PATH)
|
||||
-H
|
||||
-H=$(HEADER_FILE)
|
||||
-Hc
|
||||
-n$(TARGET_DIR)
|
||||
| $(CFG_FILE)
|
||||
@@ -0,0 +1,48 @@
|
||||
LINK_OPTIONS = -Tpe -ax -L$(LIBRARY_PATH) -m
|
||||
BCC = bcc32
|
||||
TASM_OPTIONS =
|
||||
MAKE_TEST = 1
|
||||
|
||||
STARTUP_OBJ = $(STARTUP_ROOT)\c0x32.obj
|
||||
STARTUP_LIBS = $(STARTUP_ROOT)\dpmi32.lib $(STARTUP_ROOT)\cw32.lib
|
||||
|
||||
LIB_OPTIONS = /P256
|
||||
|
||||
$(CFG_FILE): opt.mak make.cfg $(BPATH)
|
||||
copy &&|
|
||||
-DLBE4;DEBUG_LEVEL=2;DEBUG_STREAM=cout;MEMORY_REGISTER;USE_SIGNATURE
|
||||
-DTEST_CLASS=50
|
||||
-b
|
||||
-r
|
||||
-ff
|
||||
-AT
|
||||
-k-
|
||||
-N-
|
||||
-v-
|
||||
-5
|
||||
-a4
|
||||
-V
|
||||
-Jg
|
||||
-x-
|
||||
-RT-
|
||||
-O2
|
||||
-Ot
|
||||
-Oc
|
||||
-Og
|
||||
-O
|
||||
-Ol
|
||||
-Z
|
||||
-Ob
|
||||
-Oe
|
||||
-Oi
|
||||
-Om
|
||||
-Op
|
||||
-Ov
|
||||
-w
|
||||
-c
|
||||
-I$(INCLUDE_PATH)
|
||||
-H
|
||||
-H=$(HEADER_FILE)
|
||||
-Hc
|
||||
-n$(TARGET_DIR)
|
||||
| $(CFG_FILE)
|
||||
@@ -0,0 +1,19 @@
|
||||
rem --------------------------------------
|
||||
rem - %1=o restore to the directory
|
||||
rem - %1=f freshen to the directory
|
||||
rem - %2=path to the zipfile
|
||||
rem --------------------------------------
|
||||
|
||||
if "%1"=="o" goto RESTORE
|
||||
|
||||
if "%1"=="f" goto FRESHEN
|
||||
|
||||
:RESTORE
|
||||
pkunzip -o -d %2\bt.zip
|
||||
goto END
|
||||
|
||||
:FRESHEN
|
||||
pkunzip -n -d %2\bt.zip
|
||||
goto END
|
||||
|
||||
:END
|
||||
Binary file not shown.
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
del error.log
|
||||
make -r -DBTYPE=opt -DBPATH=btl4.pth -fmunga\munga.mak %1 %2 %3 %4 %5
|
||||
if errorlevel 1 goto done
|
||||
make -r -DBTYPE=opt -DBPATH=btl4.pth -fmunga_l4\mungal4.mak %1 %2 %3 %4 %5
|
||||
if errorlevel 1 goto done
|
||||
make -r -DBTYPE=opt -DBPATH=btl4.pth -fbt\bt.mak %1 %2 %3 %4 %5
|
||||
if errorlevel 1 goto done
|
||||
make -r -DBTYPE=opt -DBPATH=btl4.pth -fbt_l4\btl4.mak %1 %2 %3 %4 %5
|
||||
:done
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
BC_ROOT = d:\bc5
|
||||
DPL_ROOT = g:\tesla_bt\munga_l4\libdpl
|
||||
SOS_ROOT = g:\tesla_bt\munga_l4\sos
|
||||
NETNUB_ROOT = g:\tesla_bt\munga_l4\netnub
|
||||
STARTUP_ROOT = g:\tesla_bt
|
||||
MUNGA_ROOT = g:\tesla_bt\munga
|
||||
BT_ROOT = g:\tesla_bt\bt
|
||||
|
||||
MUNGAL4_ROOT = g:\tesla_bt\munga_l4
|
||||
BTL4_ROOT = g:\tesla_bt\bt_l4
|
||||
|
||||
BCC_OPT = bcc32i
|
||||
@@ -0,0 +1,7 @@
|
||||
joystick.ini
|
||||
anims\vcs.cfg
|
||||
audio\vcs.cfg
|
||||
gauge\vcs.cfg
|
||||
maps\vcs.cfg
|
||||
models\vcs.cfg
|
||||
solids\vcs.cfg
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
SCC = This is a Source Code Control file
|
||||
|
||||
[D0.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT", VOCAAAAA
|
||||
|
||||
[d1.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT", VOCAAAAA
|
||||
|
||||
[d2s.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT", VOCAAAAA
|
||||
|
||||
[d3s.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT", VOCAAAAA
|
||||
|
||||
[OPT.mak]
|
||||
SCC_Aux_Path = "\\AVATAR\Mungass\VSS"
|
||||
SCC_Project_Name = "$/Tesla_BT", VOCAAAAA
|
||||
@@ -0,0 +1,27 @@
|
||||
//===========================================================================//
|
||||
// File: affnmtrx.cc //
|
||||
// Project: MUNGA Brick: Math Library //
|
||||
// Contents: Implementation details for the Affine matrices //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/20/94 JMA Initial coding. //
|
||||
// 12/01/94 JMA Made compatible with SGI CC //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
Logical
|
||||
AffineMatrix::TestClass()
|
||||
{
|
||||
DEBUG_STREAM << "Starting AffineMatrix Test...\n";
|
||||
|
||||
Tell(" AffineMatrix::TestClass() stubbed out!\n");
|
||||
return False;
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
//===========================================================================//
|
||||
// File: angle.tst //
|
||||
// Project: MUNGA Brick: Math Library //
|
||||
// Contents: Tests for angle classes //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/19/94 JMA Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
Radian::TestClass()
|
||||
{
|
||||
DEBUG_STREAM << "Starting Radian Test...\n";
|
||||
|
||||
const Radian a(1.25f);
|
||||
Radian
|
||||
b,c;
|
||||
|
||||
Test(a);
|
||||
|
||||
c = 0.0f;
|
||||
Test(!c);
|
||||
|
||||
Test(Normalize(3.1f) == 3.1f);
|
||||
Test(Normalize(-3.1f) == -3.1f);
|
||||
Scalar f = Normalize(PI+PI_OVER_2);
|
||||
Test(Close_Enough(f,PI_OVER_2 - PI));
|
||||
f = Normalize(-PI-PI_OVER_2);
|
||||
Test(Close_Enough(f,PI - PI_OVER_2));
|
||||
|
||||
c = a;
|
||||
Test(c == a);
|
||||
Test(c.angle == a);
|
||||
Test(c == a.angle);
|
||||
|
||||
b.Negate(c);
|
||||
Test(b == -c.angle);
|
||||
#if 0
|
||||
b = -c;
|
||||
d.Add(b,c);
|
||||
Test(d == b.angle + c.angle);
|
||||
Test(a+b == a.angle + b.angle);
|
||||
Test(a+c == a.angle + c.angle);
|
||||
Test(a+1.25f == a.angle+1.25f);
|
||||
Test(1.25f+c == 1.25f+c.angle);
|
||||
|
||||
c = 1.5f;
|
||||
d.Subtract(c,a);
|
||||
Test(d == c.angle - a.angle);
|
||||
Test(c-a == c.angle - a.angle);
|
||||
Test(c-1.25f == c.angle - 1.25f);
|
||||
Test(1.5f-a == 1.5f - a.angle);
|
||||
Test(c-b == c.angle - b.angle);
|
||||
|
||||
c = 2.5f;
|
||||
d.Multiply(a,c);
|
||||
Test(d == a.angle * c.angle);
|
||||
Test(a*c == a.angle * c.angle);
|
||||
Test(1.25f*c == 1.25f * c.angle);
|
||||
Test(a*2.5f == a.angle * 2.5f);
|
||||
Test(a*b == a.angle * b.angle);
|
||||
|
||||
c = 2.0f;
|
||||
d.Divide(a,c);
|
||||
Test(d == a.angle / c.angle);
|
||||
Test(a/c == a.angle / c.angle);
|
||||
Test(1.25f/c == 1.25f / c.angle);
|
||||
Test(a/2.0f == a.angle / 2.0f);
|
||||
Test(a/b == a.angle / b.angle);
|
||||
|
||||
b = a;
|
||||
b += c;
|
||||
b.Normalize();
|
||||
Test(b == 3.25f - TWO_PI);
|
||||
b += 2.0f;
|
||||
b.Normalize();
|
||||
Test(b == 5.25f - TWO_PI);
|
||||
|
||||
b -= c;
|
||||
b.Normalize();
|
||||
Test(b == 3.25f - TWO_PI);
|
||||
b -= 2.0f;
|
||||
b.Normalize();
|
||||
Test(b == 1.25f);
|
||||
|
||||
b *= c;
|
||||
b.Normalize();
|
||||
Test(b == 1.25f*2.0f);
|
||||
b *= 2.0f;
|
||||
b.Normalize();
|
||||
Test(b == 1.25f*2.0f*2.0f - TWO_PI);
|
||||
|
||||
b = a*c;
|
||||
b.Normalize();
|
||||
Test(b == 1.25f*2.0f);
|
||||
b /= 2.0f;
|
||||
b.Normalize();
|
||||
Test(b == 1.25f);
|
||||
|
||||
b = -3.0f*PI_OVER_4;
|
||||
c = 3.0f*PI_OVER_4;
|
||||
Test(Lerp(b,c,0.25f) < b);
|
||||
Test(Normalize(Lerp(b,c,0.75f)) > c);
|
||||
#endif
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
Degree::TestClass()
|
||||
{
|
||||
DEBUG_STREAM << "Starting Degree test...\n";
|
||||
|
||||
const Degree a(DEG_PER_RAD);
|
||||
Degree
|
||||
b,c;
|
||||
|
||||
Radian
|
||||
r(1.0f),s;
|
||||
|
||||
s = a;
|
||||
Test(r == s);
|
||||
b = r;
|
||||
s = b;
|
||||
Test(r == s);
|
||||
c = DEG_PER_RAD;
|
||||
s = c;
|
||||
Test(r == s);
|
||||
b = c;
|
||||
s = b;
|
||||
Test(r == s);
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
SinCosPair::TestClass()
|
||||
{
|
||||
DEBUG_STREAM << "Starting SinCos test...\n";
|
||||
Radian
|
||||
s,r(PI_OVER_2);
|
||||
|
||||
SinCosPair a;
|
||||
a = r;
|
||||
|
||||
Test(Close_Enough(a.sine,1.0f));
|
||||
Test(Small_Enough(a.cosine));
|
||||
|
||||
s = a;
|
||||
Test(s == r);
|
||||
|
||||
return True;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
//===========================================================================//
|
||||
// File: tstapp.hh //
|
||||
// Project: MUNGA Brick: Application //
|
||||
// Contents: Interface specification for Application //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/06/95 ECH Added event utilities. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(APP_THP)
|
||||
# define APP_THP
|
||||
|
||||
# if !defined(APP_HPP)
|
||||
# include "app.hpp"
|
||||
# endif
|
||||
|
||||
# if !defined(RENDERER_THP)
|
||||
# include "renderer.thp"
|
||||
# endif
|
||||
|
||||
# if !defined(VIDREND_HPP)
|
||||
# include "vidrend.hpp"
|
||||
# endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TestApplication ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class TestApplication:
|
||||
public Application
|
||||
{
|
||||
public:
|
||||
TestApplication(ResourceFile *resource_file);
|
||||
~TestApplication();
|
||||
|
||||
void
|
||||
Initialize();
|
||||
void
|
||||
Terminate();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
#if !defined(APPMGR_HPP)
|
||||
# define APPMGR_HPP
|
||||
|
||||
# if !defined(APP_HPP)
|
||||
# include <app.hpp>
|
||||
# endif
|
||||
|
||||
class ApplicationManager:
|
||||
public Node
|
||||
{
|
||||
public:
|
||||
ApplicationManager(Scalar frame_rate);
|
||||
~ApplicationManager();
|
||||
|
||||
void
|
||||
StartApplication(Application *new_app);
|
||||
|
||||
void
|
||||
RunMissions();
|
||||
|
||||
Scalar
|
||||
GetFrameRate()
|
||||
{Check(this); return frameRate;}
|
||||
|
||||
protected:
|
||||
Scalar
|
||||
frameDuration,
|
||||
frameRate;
|
||||
SChainOf<Application*>
|
||||
runningApplications;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
//===========================================================================//
|
||||
// File: audtime.cpp //
|
||||
// Project: MUNGA Brick: Audio Renderer //
|
||||
// Contents: Interface declarations for AudioTim //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/08/96 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(AUDIO_HPP)
|
||||
#include <audio.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(AUDTIME_HPP)
|
||||
#include <audtime.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(APP_HPP)
|
||||
#include <app.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(AUDREND_HPP)
|
||||
#include <audrend.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
//############################# AudioTime ###############################
|
||||
//#############################################################################
|
||||
|
||||
const AudioTime
|
||||
AudioTime::Null;
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
AudioTime::TestInstance() const
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
AudioTime
|
||||
AudioTime::Now()
|
||||
{
|
||||
Check(application);
|
||||
Check(application->GetAudioRenderer());
|
||||
return AudioTime(application->GetAudioRenderer()->GetAudioFrameCount());
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
AudioFrameCount
|
||||
AudioTime::Seconds_To_Frames(Scalar seconds) const
|
||||
{
|
||||
Check(application);
|
||||
Check(application->GetAudioRenderer());
|
||||
return
|
||||
(seconds * application->GetAudioRenderer()->GetCalibrationRate() + 0.5f);
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Scalar
|
||||
AudioTime::Frames_To_Seconds(AudioFrameCount frames) const
|
||||
{
|
||||
Check(application);
|
||||
Check(application->GetAudioRenderer());
|
||||
return
|
||||
((Scalar)frames / application->GetAudioRenderer()->GetCalibrationRate());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
//===========================================================================//
|
||||
// File: audtools.hpp //
|
||||
// Project: MUNGA Brick: Audio Renderer Manager //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/10/95 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(AUDTOOLS_HPP)
|
||||
# define AUDTOOLS_HPP
|
||||
|
||||
# if !defined(STYLE_HPP)
|
||||
# include <style.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(CSTR_HPP)
|
||||
# include <cstr.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//##################### AudioCreateSymbols ###########################
|
||||
//##########################################################################
|
||||
|
||||
class AudioCreateSymbols
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction, Destruction and testing
|
||||
//
|
||||
public:
|
||||
AudioCreateSymbols();
|
||||
~AudioCreateSymbols();
|
||||
|
||||
void Execute();
|
||||
|
||||
private:
|
||||
static void
|
||||
MakeFileReadWrite(const CString &file_name);
|
||||
|
||||
protected:
|
||||
virtual void
|
||||
WriteEntryStream(ofstream &symbol_file);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
//===========================================================================//
|
||||
// File: audwgt.cpp //
|
||||
// Project: MUNGA Brick: Audio Renderer //
|
||||
// Contents: Implementation for audio weighting //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/02/96 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1996, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(AUDWGT_HPP)
|
||||
# include <audwgt.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
//########################## AudioWeighting #############################
|
||||
//#############################################################################
|
||||
|
||||
const AudioWeighting
|
||||
AudioWeighting::Null;
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
AudioWeighting::TestInstance() const
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
//===========================================================================//
|
||||
// File: average.cpp //
|
||||
// Project: MUNGA Brick: Renderer //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- -----------------------------------------------------------//
|
||||
// 12/14/94 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(AVERAGE_HPP)
|
||||
# include <average.hpp>
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
//===========================================================================//
|
||||
// File: bndgbox.hh //
|
||||
// Project: MUNGA Brick: Spatializer Library //
|
||||
// Contents: Interface specification of bounding-box based spatialization //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 01/08/95 JMA Initial port back to C++ //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1993-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(BOXLIST_HPP)
|
||||
# define BOXLIST_HPP
|
||||
|
||||
# if !defined(BNDGBOX_HPP)
|
||||
# include <bndgbox.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(MEMBLOCK_HPP)
|
||||
# include <memblock.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(POINT3D_HPP)
|
||||
# include <point3d.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//####################### BoundingBoxListNode ########################
|
||||
//##########################################################################
|
||||
|
||||
class BoundingBoxList;
|
||||
class BoxedSolidList;
|
||||
class BoundingBoxTree;
|
||||
|
||||
class BoundingBoxListNode SIGNATURED
|
||||
{
|
||||
friend class BoundingBoxList;
|
||||
friend class BoxedSolidList;
|
||||
|
||||
//##########################################################################
|
||||
// Memory Allocation
|
||||
//
|
||||
private:
|
||||
static MemoryBlock
|
||||
AllocatedMemory;
|
||||
void*
|
||||
operator new(size_t)
|
||||
{return AllocatedMemory.New();}
|
||||
void
|
||||
operator delete(void *where)
|
||||
{AllocatedMemory.Delete(where);}
|
||||
|
||||
//##########################################################################
|
||||
// Construction and Destruction
|
||||
//
|
||||
protected:
|
||||
BoundingBox
|
||||
*boundingBox;
|
||||
BoundingBoxListNode
|
||||
*previousNode;
|
||||
|
||||
BoundingBoxListNode(
|
||||
BoundingBox *volume,
|
||||
const ExtentBox &slice
|
||||
):
|
||||
boundingBox(volume),
|
||||
solidSlice(slice),
|
||||
previousNode(NULL)
|
||||
{Check_Pointer(this); Check(volume);}
|
||||
~BoundingBoxListNode()
|
||||
{Check(this);}
|
||||
|
||||
public:
|
||||
ExtentBox
|
||||
solidSlice;
|
||||
BoundingBox*
|
||||
GetBoundingBox()
|
||||
{Check(this); return boundingBox;}
|
||||
BoundingBoxListNode*
|
||||
GetNextNode()
|
||||
{Check(this); return previousNode;}
|
||||
|
||||
//##########################################################################
|
||||
// Test Support
|
||||
//
|
||||
public:
|
||||
Logical
|
||||
TestInstance() const;
|
||||
};
|
||||
|
||||
//##########################################################################
|
||||
//######################## BoundingBoxList ###########################
|
||||
//##########################################################################
|
||||
|
||||
class BoundingBoxList SIGNATURED
|
||||
{
|
||||
|
||||
//##########################################################################
|
||||
// Construction and Destruction
|
||||
//
|
||||
protected:
|
||||
BoundingBoxListNode
|
||||
*root;
|
||||
int
|
||||
nodeCount;
|
||||
int*
|
||||
scoreBoard;
|
||||
BoundingBox
|
||||
**boundingBoxIndex;
|
||||
Logical
|
||||
isXMajorAxis;
|
||||
|
||||
public:
|
||||
BoundingBoxList();
|
||||
~BoundingBoxList();
|
||||
|
||||
void
|
||||
Add(
|
||||
BoundingBox* volume,
|
||||
const ExtentBox &slice
|
||||
);
|
||||
void
|
||||
Remove(BoundingBox* volume);
|
||||
void
|
||||
EraseList();
|
||||
|
||||
BoundingBoxListNode*
|
||||
GetRoot()
|
||||
{Check(this); return root;}
|
||||
|
||||
//##########################################################################
|
||||
// Tree Traversal Functions
|
||||
//
|
||||
public:
|
||||
BoundingBox*
|
||||
FindBoundingBoxContaining(const Point3D &point);
|
||||
|
||||
void
|
||||
FindBoundingBoxesContaining(
|
||||
BoundingBox *volume,
|
||||
BoundingBoxCollisionList &list
|
||||
);
|
||||
|
||||
BoundingBox*
|
||||
FindBoundingBoxUnder(
|
||||
const Point3D &point,
|
||||
Scalar *height
|
||||
);
|
||||
|
||||
BoundingBox*
|
||||
FindBoundingBoxHitBy(Line *line);
|
||||
|
||||
void
|
||||
Reduce();
|
||||
void
|
||||
SortForTree();
|
||||
|
||||
protected:
|
||||
void
|
||||
Sort(
|
||||
BoundingBoxList &active_solids,
|
||||
ExtentBox &clipping_box,
|
||||
BoundingBoxTree &tree_so_far
|
||||
);
|
||||
|
||||
//##########################################################################
|
||||
// Test Support
|
||||
//
|
||||
public:
|
||||
Logical
|
||||
TestInstance() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,73 @@
|
||||
//===========================================================================//
|
||||
// File: cmpnnt.hh //
|
||||
// Project: MUNGA Brick: Watcher //
|
||||
// Contents: //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- -----------------------------------------------------------//
|
||||
// 12/14/94 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(CMPNNT_HPP)
|
||||
# define CMPNNT_HPP
|
||||
|
||||
# if !defined(RECEIVER_HPP)
|
||||
# include <receiver.hpp>
|
||||
# endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Component ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class Component:
|
||||
public Receiver
|
||||
{
|
||||
public:
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// Destructor
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
~Component();
|
||||
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// Execute
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
virtual void
|
||||
Execute();
|
||||
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// Shared Data Support
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
static Derivation
|
||||
ClassDerivations;
|
||||
static SharedData
|
||||
DefaultData;
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
protected:
|
||||
//
|
||||
//-----------------------------------------------------------------------
|
||||
// Constructor
|
||||
//-----------------------------------------------------------------------
|
||||
//
|
||||
Component(
|
||||
ClassID class_id = TrivialComponentClassID,
|
||||
SharedData &shared_data = DefaultData
|
||||
);
|
||||
Component(
|
||||
PlugStream *stream,
|
||||
SharedData &shared_data = DefaultData
|
||||
);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
//===========================================================================//
|
||||
// File: Color.cpp //
|
||||
// Project: MUNGA Brick: Utility Library //
|
||||
// Contents: Implementation details for color classes //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/12/95 GDU Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(COLOR_HPP)
|
||||
# include <color.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(CSTR_HPP)
|
||||
#include <cstr.hpp>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#if defined(USE_SIGNATURE)
|
||||
int
|
||||
Is_Signature_Bad(const volatile RGBColor *)
|
||||
{
|
||||
return False;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
void
|
||||
Convert_From_Ascii(
|
||||
const char *str,
|
||||
RGBColor *color
|
||||
)
|
||||
{
|
||||
Check_Pointer(str);
|
||||
Check_Signature(color);
|
||||
|
||||
CString parse_string(str);
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(0));
|
||||
color->Red = atof(parse_string.GetNthToken(0));
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(1));
|
||||
color->Green = atof(parse_string.GetNthToken(1));
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(2));
|
||||
color->Blue = atof(parse_string.GetNthToken(2));
|
||||
|
||||
Check(color);
|
||||
}
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
Logical
|
||||
RGBColor::TestInstance() const
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBAColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
void
|
||||
Convert_From_Ascii(
|
||||
const char *str,
|
||||
RGBAColor *color
|
||||
)
|
||||
{
|
||||
Check_Pointer(str);
|
||||
Check_Signature(color);
|
||||
|
||||
CString parse_string(str);
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(0));
|
||||
color->Red = atof(parse_string.GetNthToken(0));
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(1));
|
||||
color->Green = atof(parse_string.GetNthToken(1));
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(2));
|
||||
color->Blue = atof(parse_string.GetNthToken(2));
|
||||
|
||||
Check_Pointer(parse_string.GetNthToken(3));
|
||||
color->Alpha = atof(parse_string.GetNthToken(3));
|
||||
|
||||
Check(color);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
//===========================================================================//
|
||||
// File: color.hh //
|
||||
// Title: Declaration of Color classes. //
|
||||
// Project: Tool Architecture II //
|
||||
// Author: Jerry Edsall & Ken Olsen (based on work by J.M. Albertson) //
|
||||
// Purpose: Stores color information. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 12/15/94 KEO Added RGBAColor class. //
|
||||
// 11/12/95 GDU Added MUNGA signatures and stream IO, moved to MUNGA //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (c) 1994 Virtual World Entertainment, Inc. //
|
||||
// All rights reserved worldwide. //
|
||||
// This unpublished source code is PROPRIETARY and CONFIDENTIAL. //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(COLOR_HPP)
|
||||
#define COLOR_HPP
|
||||
|
||||
#if !defined(MEMSTRM_HPP)
|
||||
#include <memstrm.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(SCALAR_HPP)
|
||||
#include <scalar.hpp>
|
||||
#endif
|
||||
|
||||
//##########################################################################
|
||||
//############## RGBColor ############################################
|
||||
//##########################################################################
|
||||
|
||||
class RGBColor
|
||||
{
|
||||
friend class RGBAColor;
|
||||
|
||||
public:
|
||||
Scalar
|
||||
Red,
|
||||
Green,
|
||||
Blue;
|
||||
|
||||
#if defined(USE_SIGNATURE)
|
||||
friend int
|
||||
Is_Signature_Bad(const volatile RGBColor *p);
|
||||
#endif
|
||||
|
||||
|
||||
RGBColor()
|
||||
{
|
||||
Red = Green = Blue = -1.0f;
|
||||
}
|
||||
|
||||
RGBColor(
|
||||
Scalar r,
|
||||
Scalar g,
|
||||
Scalar b
|
||||
)
|
||||
{
|
||||
Red = r;
|
||||
Green = g;
|
||||
Blue = b;
|
||||
}
|
||||
|
||||
Logical
|
||||
operator==(const RGBColor &a_RGBColor) const
|
||||
{ return !memcmp(this, &a_RGBColor, sizeof(RGBColor)); }
|
||||
Logical
|
||||
operator!=(const RGBColor &a_RGBColor) const
|
||||
{ return memcmp(this, &a_RGBColor, sizeof(RGBColor)); }
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
RGBColor
|
||||
operator+(const RGBColor &a_RGBColor) const
|
||||
{
|
||||
return RGBColor (
|
||||
min(this->Red + a_RGBColor.Red, 1.0),
|
||||
min(this->Green + a_RGBColor.Green, 1.0),
|
||||
min(this->Blue + a_RGBColor.Blue, 1.0));
|
||||
}
|
||||
Scalar
|
||||
Infrared() const
|
||||
{ return 0.3 * this->Red + 0.5 * this->Green + 0.2 * this->Blue; }
|
||||
|
||||
//
|
||||
// Support functions
|
||||
//
|
||||
friend ostream&
|
||||
operator<<(
|
||||
ostream& stream,
|
||||
const RGBColor& C
|
||||
);
|
||||
|
||||
|
||||
private:
|
||||
Scalar
|
||||
min(Scalar x, Scalar y) const
|
||||
{ return x < y ? x : y; }
|
||||
|
||||
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
void
|
||||
Convert_From_Ascii(
|
||||
const char *str,
|
||||
RGBColor *color
|
||||
);
|
||||
|
||||
inline MemoryStream&
|
||||
MemoryStream_Read(
|
||||
MemoryStream* stream,
|
||||
RGBColor *output
|
||||
)
|
||||
{return stream->ReadBytes(output, sizeof(*output));}
|
||||
inline MemoryStream&
|
||||
MemoryStream_Write(
|
||||
MemoryStream* stream,
|
||||
const RGBColor *input
|
||||
)
|
||||
{return stream->WriteBytes(input, sizeof(*input));}
|
||||
|
||||
//##########################################################################
|
||||
//############## RGBAColor ###########################################
|
||||
//##########################################################################
|
||||
|
||||
class RGBAColor:
|
||||
public RGBColor
|
||||
{
|
||||
public:
|
||||
Scalar
|
||||
Alpha;
|
||||
|
||||
RGBAColor():
|
||||
RGBColor()
|
||||
{ Alpha = -1.0f; }
|
||||
|
||||
RGBAColor(
|
||||
Scalar r,
|
||||
Scalar g,
|
||||
Scalar b,
|
||||
Scalar a
|
||||
):
|
||||
RGBColor(r, g, b)
|
||||
{ Alpha = a; }
|
||||
|
||||
Logical
|
||||
operator==(const RGBAColor &a_RGBAColor) const
|
||||
{ return !memcmp(this, &a_RGBAColor, sizeof(RGBAColor)); }
|
||||
Logical
|
||||
operator!=(const RGBAColor &a_RGBAColor) const
|
||||
{ return memcmp(this, &a_RGBAColor, sizeof(RGBAColor)); }
|
||||
|
||||
//
|
||||
// Support functions
|
||||
//
|
||||
friend ostream&
|
||||
operator<<(
|
||||
ostream& stream,
|
||||
const RGBAColor& c
|
||||
);
|
||||
};
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBAColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
void
|
||||
Convert_From_Ascii(
|
||||
const char *str,
|
||||
RGBAColor *color
|
||||
);
|
||||
|
||||
inline MemoryStream&
|
||||
MemoryStream_Read(
|
||||
MemoryStream* stream,
|
||||
RGBAColor *output
|
||||
)
|
||||
{return stream->ReadBytes(output, sizeof(*output));}
|
||||
inline MemoryStream&
|
||||
MemoryStream_Write(
|
||||
MemoryStream* stream,
|
||||
const RGBAColor *input
|
||||
)
|
||||
{return stream->WriteBytes(input, sizeof(*input));}
|
||||
|
||||
#endif
|
||||
|
||||
//=============================================================================
|
||||
@@ -0,0 +1,79 @@
|
||||
|
||||
#define TEST_STRING "Test String"
|
||||
#define TEST_STRING_2 "Test StringTest String"
|
||||
#define TEST_STRING_3 "Test StringZ"
|
||||
|
||||
Logical
|
||||
CString::TestClass()
|
||||
{
|
||||
#if 1
|
||||
CString string_a;
|
||||
|
||||
//Verify(string_a.stringSize == 0);
|
||||
//Verify(string_a.stringLength == 0);
|
||||
//Verify(string_a.stringText == NULL);
|
||||
|
||||
CString string_b(TEST_STRING);
|
||||
CString string_c(string_b);
|
||||
|
||||
Verify(string_b.Length() == strlen(TEST_STRING));
|
||||
Verify(string_b.Length() == strlen(string_c));
|
||||
Verify(string_b == string_c);
|
||||
|
||||
CString string_d(TEST_STRING_2);
|
||||
CString string_e;
|
||||
|
||||
string_e = string_b + string_c;
|
||||
Verify(string_e == string_d);
|
||||
|
||||
CString string_f(TEST_STRING_3);
|
||||
CString string_g;
|
||||
|
||||
string_g = string_b + 'Z';
|
||||
Verify(string_g == string_f);
|
||||
|
||||
CString string_h(TEST_STRING);
|
||||
|
||||
string_h += string_b;
|
||||
Verify(string_h == string_d);
|
||||
|
||||
CString string_i(TEST_STRING);
|
||||
|
||||
string_i += 'Z';
|
||||
Verify(string_i == string_f);
|
||||
|
||||
CString string_j("aaa");
|
||||
CString string_k("aab");
|
||||
CString string_l("abb");
|
||||
CString string_m("bbb");
|
||||
CString string_n("aaa");
|
||||
|
||||
Verify(string_j < string_k);
|
||||
Verify(string_l > string_k);
|
||||
Verify(string_l <= string_m);
|
||||
Verify(string_m >= string_j);
|
||||
Verify(string_j == string_n);
|
||||
Verify(string_j != string_k);
|
||||
|
||||
Verify(string_k[0] == 'a');
|
||||
Verify(string_k[1] == 'a');
|
||||
Verify(string_k[2] == 'b');
|
||||
|
||||
CString string_o("0.1,0.2,0.3");
|
||||
CString string_p("0.1 0.2 0.3");
|
||||
CString string_q("0.1");
|
||||
CString string_r("0.2");
|
||||
CString string_s("0.3");
|
||||
|
||||
Verify(string_o.GetNthToken(0) == string_q);
|
||||
Verify(string_o.GetNthToken(1) == string_r);
|
||||
Verify(string_o.GetNthToken(2) == string_s);
|
||||
|
||||
Verify(string_p.GetNthToken(0) == string_q);
|
||||
Verify(string_p.GetNthToken(1) == string_r);
|
||||
Verify(string_p.GetNthToken(2) == string_s);
|
||||
#endif
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
//=======================================================================//
|
||||
// File: debugoff.hpp //
|
||||
// Project: Architecture //
|
||||
// Author: J.M. Albertson //
|
||||
// 4-12-95 CPB added Str_Cat macro //
|
||||
//-----------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//=======================================================================//
|
||||
|
||||
#if !defined(OLD_DEBUG_LEVEL)
|
||||
# define OLD_DEBUG_LEVEL 0
|
||||
#else
|
||||
# undef OLD_DEBUG_LEVEL
|
||||
# if DEBUG_LEVEL>=3
|
||||
# define OLD_DEBUG_LEVEL 3
|
||||
# elif DEBUG_LEVEL==2
|
||||
# define OLD_DEBUG_LEVEL 2
|
||||
# elif DEBUG_LEVEL==1
|
||||
# define OLD_DEBUG_LEVEL 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#undef DEBUG_LEVEL
|
||||
#undef Verify
|
||||
#undef Verify_And_Dump
|
||||
#undef Warn
|
||||
#undef Warn_And_Dump
|
||||
#undef Dump
|
||||
#undef Tell
|
||||
#undef Check_Signature
|
||||
#undef Check_Pointer
|
||||
#undef Mem_Copy
|
||||
#undef Str_Copy
|
||||
#undef Str_Cat
|
||||
#undef Check
|
||||
#undef Check_Fpu
|
||||
#undef Fail
|
||||
#undef Cast_Object
|
||||
#undef DEBUG_CODE
|
||||
#undef Sqrt
|
||||
#undef Arctan
|
||||
#undef Arccos
|
||||
#undef Arcsin
|
||||
|
||||
#define DEBUG_LEVEL 0
|
||||
#define DEBUG_CODE(x)
|
||||
#define Verify(c)
|
||||
#define Verify_And_Dump(c,v)
|
||||
#define Warn(c)
|
||||
#define Warn_And_Dump(c,v)
|
||||
#define Dump(v)
|
||||
#define Tell(m)
|
||||
#define Check_Pointer(p)
|
||||
#define Check_Fpu()
|
||||
#define Mem_Copy(destination, source, length, available)\
|
||||
memcpy(destination, source, length)
|
||||
#define Str_Copy(destination, source, available)\
|
||||
strcpy(destination, source);
|
||||
#define Str_Cat(destination, source, available)\
|
||||
strcat(destination, source);
|
||||
#define Sqrt(value) sqrt(value)
|
||||
#define Arctan(y,x) atan2(y,x)
|
||||
#define Arccos(x) acos(x)
|
||||
#define Arcsin(x) asin(x)
|
||||
#define Power(x,y) pow(x,y)
|
||||
|
||||
#define Check(p)
|
||||
#define Check_Signature(p)
|
||||
#define Fail(m) Fail_To_Debugger(m,__FILE__,__LINE__)
|
||||
#define Cast_Object(type, ptr) ((type)(ptr))
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
//=======================================================================//
|
||||
// File: debug2on.hpp //
|
||||
// Project: Architecture //
|
||||
// Author: J.M. Albertson //
|
||||
// 4-12-95 CPB added Str_Cat macro //
|
||||
//-----------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//=======================================================================//
|
||||
|
||||
#if !defined(OLD_DEBUG_LEVEL)
|
||||
# error Cannot revert to old debug level!
|
||||
#else
|
||||
# if OLD_DEBUG_LEVEL>=3
|
||||
# include <debug3on.hpp>
|
||||
# elif OLD_DEBUG_LEVEL==2
|
||||
# include <debug2on.hpp>
|
||||
# elif OLD_DEBUG_LEVEL==1
|
||||
# include <debug1on.hpp>
|
||||
# else
|
||||
# include <debugoff.hpp>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
//===========================================================================//
|
||||
// File: evtstat.cpp //
|
||||
// Project: MUNGA Brick: Event Manager //
|
||||
// Contents: interface specification of event manager //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/15/96 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(EVTSTAT_HPP)
|
||||
# include <evtstat.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(APP_HPP)
|
||||
# include <app.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(REGISTRY_HPP)
|
||||
# include <registry.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(ENTITY_HPP)
|
||||
# include <entity.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
//########################## EventStatistics ############################
|
||||
//#############################################################################
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
EventStatistics::EventStatistics(
|
||||
ClassID class_ID,
|
||||
Receiver::MessageID message_ID
|
||||
):
|
||||
classID(class_ID),
|
||||
messageID(message_ID),
|
||||
eventCount(0)
|
||||
{
|
||||
}
|
||||
|
||||
//#############################################################################
|
||||
//######################## EventStatisticsManager #######################
|
||||
//#############################################################################
|
||||
|
||||
EventStatisticsManager
|
||||
event_statistics_manager;
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
EventStatisticsManager::EventStatisticsManager():
|
||||
eventStatisticsSocket(NULL, True)
|
||||
{
|
||||
printedReport = False;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
EventStatisticsManager::Maintain(Event *event)
|
||||
{
|
||||
Check(this);
|
||||
Check(event);
|
||||
|
||||
//
|
||||
// If the application is not running then it is not time to collect
|
||||
// statistics yet
|
||||
//
|
||||
Check(application);
|
||||
if (application->GetApplicationState() != Application::RunningMission)
|
||||
return;
|
||||
|
||||
//
|
||||
// Add statistics for this event
|
||||
//
|
||||
ClassID
|
||||
class_ID;
|
||||
Receiver::MessageID
|
||||
message_ID;
|
||||
long
|
||||
index_value;
|
||||
EventStatistics
|
||||
*event_statistics;
|
||||
|
||||
message_ID = event->messageToSend->messageID;
|
||||
class_ID = event->targetReceiver.GetCurrent()->GetClassID();
|
||||
index_value = class_ID * 1000 + message_ID; // HACK to create unique key
|
||||
if ((event_statistics = eventStatisticsSocket.Find(index_value)) == NULL)
|
||||
{
|
||||
event_statistics = new EventStatistics(class_ID, message_ID);
|
||||
eventStatisticsSocket.AddValue(event_statistics, index_value);
|
||||
}
|
||||
Check(event_statistics);
|
||||
event_statistics->eventCount++;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
EventStatisticsManager::Report()
|
||||
{
|
||||
Check(this);
|
||||
|
||||
//
|
||||
// Print Report
|
||||
//
|
||||
TableIteratorOf<EventStatistics*, long>
|
||||
iterator(&eventStatisticsSocket);
|
||||
EventStatistics
|
||||
*event_statistics;
|
||||
|
||||
DEBUG_STREAM << "EventStatisticsManager::Report - event_count="
|
||||
<< iterator.GetSize() << "\n";
|
||||
while ((event_statistics = iterator.ReadAndNext()) != NULL)
|
||||
{
|
||||
Check(event_statistics);
|
||||
|
||||
Registry
|
||||
*registry;
|
||||
Entity::SharedData
|
||||
*shared_data;
|
||||
Derivation
|
||||
*derivation;
|
||||
Receiver::MessageHandlerSet
|
||||
*handlers;
|
||||
|
||||
DEBUG_STREAM << "EventStatisticsManager::Report -\t";
|
||||
DEBUG_STREAM << event_statistics->classID << "\t";
|
||||
DEBUG_STREAM << event_statistics->messageID << "\t";
|
||||
DEBUG_STREAM << event_statistics->eventCount << "\t";
|
||||
|
||||
Check(application);
|
||||
if ((registry = application->GetRegistry()) != NULL)
|
||||
{
|
||||
Check(registry);
|
||||
shared_data = registry->GetStaticData(event_statistics->classID);
|
||||
if (shared_data != NULL)
|
||||
{
|
||||
Check(shared_data);
|
||||
derivation = shared_data->derivedClasses;
|
||||
Check(derivation);
|
||||
handlers = shared_data->activeMessageHandlers;
|
||||
Check(handlers);
|
||||
|
||||
DEBUG_STREAM << derivation->className << "::"
|
||||
<< handlers->GetName(event_statistics->messageID) << "\t";
|
||||
}
|
||||
}
|
||||
DEBUG_STREAM << "\n";
|
||||
}
|
||||
iterator.DeletePlugs();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
//===========================================================================//
|
||||
// File: evtstat.hpp //
|
||||
// Project: MUNGA Brick: Event Manager //
|
||||
// Contents: interface specification of event manager //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 05/15/96 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(EVTSTAT_HPP)
|
||||
# define EVTSTAT_HPP
|
||||
|
||||
# if !defined(STYLE_HPP)
|
||||
# include <style.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(RECEIVER_HPP)
|
||||
# include <receiver.hpp>
|
||||
# endif
|
||||
|
||||
# if !defined(TABLE_HPP)
|
||||
# include <table.hpp>
|
||||
# endif
|
||||
|
||||
//#########################################################################
|
||||
//######################## EventStatistics ##########################
|
||||
//#########################################################################
|
||||
|
||||
class EventStatistics:
|
||||
public Plug
|
||||
{
|
||||
friend class EventStatisticsManager;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction, Destruction
|
||||
//
|
||||
public:
|
||||
EventStatistics::EventStatistics(
|
||||
ClassID class_ID,
|
||||
Receiver::MessageID message_ID
|
||||
);
|
||||
~EventStatistics() {}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Private Data
|
||||
//
|
||||
private:
|
||||
ClassID
|
||||
classID;
|
||||
Receiver::MessageID
|
||||
messageID;
|
||||
long
|
||||
eventCount;
|
||||
};
|
||||
|
||||
//#########################################################################
|
||||
//##################### EventStatisticsManager ######################
|
||||
//#########################################################################
|
||||
|
||||
class EventStatisticsManager:
|
||||
public Node
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Construction, Destruction
|
||||
//
|
||||
public:
|
||||
EventStatisticsManager::EventStatisticsManager();
|
||||
~EventStatisticsManager() {}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Statistic collection and reporting
|
||||
//
|
||||
public:
|
||||
void
|
||||
Maintain(Event *event);
|
||||
void
|
||||
Report();
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Private Data
|
||||
//
|
||||
private:
|
||||
TableOf<EventStatistics*, long>
|
||||
eventStatisticsSocket;
|
||||
Logical
|
||||
printedReport;
|
||||
};
|
||||
|
||||
extern EventStatisticsManager
|
||||
event_statistics_manager;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,152 @@
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(FILESTRM_HPP)
|
||||
# include <filestrm.hpp>
|
||||
#endif
|
||||
|
||||
//#############################################################################
|
||||
//########################### FileStream ################################
|
||||
//#############################################################################
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
FileStream::FileStream(
|
||||
const char* file_name,
|
||||
Logical writable
|
||||
):
|
||||
MemoryStream(NULL, 0)
|
||||
{
|
||||
Open(file_name, writable);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
FileStream::Open(
|
||||
const char* file_name,
|
||||
Logical writable
|
||||
)
|
||||
{
|
||||
readOnly = !writable;
|
||||
(int)fileHandle = -1;
|
||||
currentPosition = streamStart = NULL;
|
||||
streamSize = 0;
|
||||
if (file_name)
|
||||
{
|
||||
Check_Pointer(file_name);
|
||||
fileHandle = OpenImplementation(file_name, readOnly);
|
||||
}
|
||||
|
||||
if ((int) fileHandle != -1)
|
||||
{
|
||||
if (readOnly)
|
||||
{
|
||||
streamSize = SeekImplementation(fileHandle, 0, True);
|
||||
SeekImplementation(fileHandle, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
streamSize = 0xFFFFFFFFU;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
FileStream::Close()
|
||||
{
|
||||
Check(this);
|
||||
|
||||
//
|
||||
//---------------------------------
|
||||
// If the file was opened, close it
|
||||
//---------------------------------
|
||||
//
|
||||
if ((int) fileHandle != -1)
|
||||
{
|
||||
CloseImplementation(fileHandle);
|
||||
}
|
||||
(int)fileHandle = -1;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
FileStream::SetPointer(size_t index)
|
||||
{
|
||||
Check(this);
|
||||
Verify((int) fileHandle != -1);
|
||||
|
||||
currentPosition = (char*)SeekImplementation(fileHandle, index);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
MemoryStream&
|
||||
FileStream::AdvancePointer(size_t index)
|
||||
{
|
||||
Check(this);
|
||||
Verify((int)fileHandle != -1);
|
||||
|
||||
currentPosition =
|
||||
(char*)SeekImplementation(fileHandle, (size_t)currentPosition + index);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
MemoryStream&
|
||||
FileStream::RewindPointer(size_t index)
|
||||
{
|
||||
Check(this);
|
||||
Verify((int)fileHandle != -1);
|
||||
|
||||
currentPosition =
|
||||
(char*)SeekImplementation(fileHandle, (size_t)currentPosition + index);
|
||||
return *this;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
MemoryStream&
|
||||
FileStream::ReadBytes(
|
||||
void *ptr,
|
||||
size_t number_of_bytes
|
||||
)
|
||||
{
|
||||
Check(this);
|
||||
Verify((int)fileHandle != -1);
|
||||
Verify(readOnly);
|
||||
size_t read = ReadImplementation(fileHandle, ptr, number_of_bytes);
|
||||
Verify(read == number_of_bytes);
|
||||
currentPosition += read;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
MemoryStream&
|
||||
FileStream::WriteBytes(
|
||||
const void *ptr,
|
||||
size_t number_of_bytes
|
||||
)
|
||||
{
|
||||
Check(this);
|
||||
Verify((int)fileHandle != -1);
|
||||
Verify(!readOnly);
|
||||
size_t written = WriteImplementation(fileHandle, ptr, number_of_bytes);
|
||||
Verify(written == number_of_bytes);
|
||||
currentPosition += written;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
Logical
|
||||
FileStream::TestInstance() const
|
||||
{
|
||||
return True;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
//===========================================================================//
|
||||
// File: filestrm.hpp //
|
||||
// Project: MUNGA Brick: Resource Manager //
|
||||
// Contents: Implementation Details of resource management //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1996, Virtual World Entertainment, Inc. //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(FILESTRM_HPP)
|
||||
# define FILESTRM_HPP
|
||||
|
||||
# if !defined(MEMSTRM_HPP)
|
||||
# include <memstrm.hpp>
|
||||
# endif
|
||||
|
||||
//##########################################################################
|
||||
//######################## FileStream ################################
|
||||
//##########################################################################
|
||||
|
||||
class FileStream:
|
||||
public MemoryStream
|
||||
{
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Constructors
|
||||
//
|
||||
public:
|
||||
FileStream(
|
||||
const char* file_name = NULL,
|
||||
Logical writable = False
|
||||
);
|
||||
~FileStream()
|
||||
{Close();}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Status functions
|
||||
//
|
||||
public:
|
||||
void*
|
||||
GetPointer() const
|
||||
{
|
||||
Fail("No implementation possible for FileStream::GetPointer()");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
SetPointer(void *new_pointer)
|
||||
{Fail("No implementation possible for FileStream::SetPointer(void*)");}
|
||||
void
|
||||
SetPointer(size_t index);
|
||||
|
||||
MemoryStream&
|
||||
AdvancePointer(size_t count);
|
||||
|
||||
MemoryStream&
|
||||
RewindPointer(size_t count);
|
||||
|
||||
MemoryStream&
|
||||
ReadBytes(
|
||||
void *ptr,
|
||||
size_t number_of_bytes
|
||||
);
|
||||
MemoryStream&
|
||||
WriteBytes(
|
||||
const void *ptr,
|
||||
size_t number_of_bytes
|
||||
);
|
||||
|
||||
void
|
||||
Open(
|
||||
const char* file_name = NULL,
|
||||
Logical writable = False
|
||||
);
|
||||
void
|
||||
Close();
|
||||
Logical
|
||||
IsFileOpened()
|
||||
{return ((int) fileHandle) != -1;}
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
static Logical
|
||||
TestClass();
|
||||
|
||||
protected:
|
||||
void * fileHandle;
|
||||
Logical readOnly;
|
||||
|
||||
static void*
|
||||
OpenImplementation(
|
||||
const char* file_name,
|
||||
Logical read_only
|
||||
);
|
||||
static void
|
||||
CloseImplementation(void * file_handle);
|
||||
static size_t
|
||||
SeekImplementation(
|
||||
void * file_handle,
|
||||
size_t where,
|
||||
Logical from_end = False
|
||||
);
|
||||
static size_t
|
||||
ReadImplementation(
|
||||
void * file_handle,
|
||||
void *buffer,
|
||||
size_t length
|
||||
);
|
||||
static size_t
|
||||
WriteImplementation(
|
||||
void * file_handle,
|
||||
const void* buffer,
|
||||
size_t length
|
||||
);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
//===========================================================================//
|
||||
// File: filestrm.tcp //
|
||||
// Project: MUNGA Brick: Filestream Manager //
|
||||
// Contents: Test stuff for MMIO class //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 4/25/96 JTR Initial Creation //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MMIOstream ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
//#############################################################################
|
||||
//
|
||||
|
||||
#include <time.hpp>
|
||||
|
||||
Logical
|
||||
FileStream::TestClass()
|
||||
{
|
||||
char buffer[65535];
|
||||
int i;
|
||||
float total = 0;
|
||||
Time s;
|
||||
|
||||
FileStream Testit;
|
||||
|
||||
memset(buffer,'A',65535);
|
||||
|
||||
DEBUG_STREAM << "Starting FileStream test...\n";
|
||||
for(i=0; i < 1024; i++)
|
||||
{
|
||||
s = Now();
|
||||
Testit.Open("mmiotest.tst",1);
|
||||
Testit.WriteBytes(buffer,65535);
|
||||
Testit.Close();
|
||||
Testit.Open("mmiotest.tst",0);
|
||||
Testit.ReadBytes(buffer,65535);
|
||||
Testit.Close();
|
||||
total += Now() - s;
|
||||
}
|
||||
for(i=0; i < 65535; i++) Verify(buffer[i] == 'A');
|
||||
DEBUG_STREAM << "Opening, writing, closing, opening, reading, and closing\n 64K file 1024 times, averaging out to " << total / 1024.0f << " ticks apiece...\n";
|
||||
DEBUG_STREAM << "File data checks out, as well...\n";
|
||||
DEBUG_STREAM << "Leaving FileStream test...\n";
|
||||
return True;
|
||||
};
|
||||
@@ -0,0 +1,78 @@
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(FILESTRM_HPP)
|
||||
# include <filestrm.hpp>
|
||||
#endif
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
#include <sys\stat.h>
|
||||
|
||||
//#############################################################################
|
||||
//########################### FileStream ################################
|
||||
//#############################################################################
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void*
|
||||
FileStream::OpenImplementation(
|
||||
const char *file_name,
|
||||
Logical read_only
|
||||
)
|
||||
{
|
||||
if (read_only)
|
||||
{
|
||||
return (void*)open(file_name, O_BINARY|O_RDONLY);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (void*)
|
||||
open(file_name, O_BINARY|O_CREAT|O_TRUNC|O_WRONLY, S_IWRITE);
|
||||
}
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
void
|
||||
FileStream::CloseImplementation(void * file_handle)
|
||||
{
|
||||
close((int)file_handle);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
size_t
|
||||
FileStream::SeekImplementation(
|
||||
void * file_handle,
|
||||
size_t where,
|
||||
Logical from_end
|
||||
)
|
||||
{
|
||||
return lseek((int)file_handle, (long)where, (from_end) ? SEEK_END : SEEK_SET);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
size_t
|
||||
FileStream::ReadImplementation(
|
||||
void * file_handle,
|
||||
void *buffer,
|
||||
size_t length
|
||||
)
|
||||
{
|
||||
return read((int)file_handle, buffer, length);
|
||||
}
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
//
|
||||
size_t
|
||||
FileStream::WriteImplementation(
|
||||
void * file_handle,
|
||||
const void *buffer,
|
||||
size_t length
|
||||
)
|
||||
{
|
||||
return write((int)file_handle, buffer, length);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// Heap.h -- This file contains the definition for the Base HEAP
|
||||
// Manager Class. The Base HEAP manager creates,
|
||||
// manages and destroys block of memory using Win32
|
||||
// virtual memory calls.
|
||||
//
|
||||
// Honor Bound -- FASA Interactive Technologies
|
||||
//
|
||||
// Copyright (c) 1995 FASA Interactive Technologies
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#if !defined(HEAP_HPP)
|
||||
# define HEAP_HPP
|
||||
|
||||
#if !defined(STYLE_HPP)
|
||||
#include <style.hpp>
|
||||
#endif
|
||||
|
||||
# if !defined(MEMREG_HPP)
|
||||
# include <memreg.hpp>
|
||||
# endif
|
||||
|
||||
#if defined(MW3)
|
||||
extern fstream debugfile;
|
||||
#endif
|
||||
|
||||
struct HeapBlock;
|
||||
struct HeapFreeBlock;
|
||||
|
||||
class UserHeap SIGNATURED
|
||||
{
|
||||
protected:
|
||||
char
|
||||
*bigHeap;
|
||||
const char
|
||||
*heapName;
|
||||
HeapBlock
|
||||
*heapStart,
|
||||
*firstNearBlock;
|
||||
size_t
|
||||
heapSize,
|
||||
lowestTotalHeapLeft;
|
||||
size_t
|
||||
allocateCount,
|
||||
releaseCount;
|
||||
|
||||
protected:
|
||||
void
|
||||
Relink(HeapBlock *newBlock);
|
||||
void
|
||||
Unlink(HeapBlock *oldBlock);
|
||||
void
|
||||
Sort(HeapBlock *sortBlock);
|
||||
void
|
||||
MergeWithLower(HeapBlock *block);
|
||||
|
||||
public:
|
||||
UserHeap(
|
||||
const char* heap_name,
|
||||
size_t mem_size
|
||||
);
|
||||
~UserHeap();
|
||||
|
||||
size_t
|
||||
GetTotalHeapLeft();
|
||||
size_t
|
||||
GetBiggestHeapLeft();
|
||||
size_t
|
||||
GetLowestTotalHeapLeft()
|
||||
{return lowestTotalHeapLeft;}
|
||||
size_t
|
||||
GetHeapUsed()
|
||||
{return heapSize - GetTotalHeapLeft();}
|
||||
size_t
|
||||
GetMostHeapUsed()
|
||||
{return heapSize - lowestTotalHeapLeft;}
|
||||
|
||||
Logical
|
||||
TestHeap(
|
||||
Logical print_it = False,
|
||||
Logical skip_allocated = False,
|
||||
Logical skip_free = False
|
||||
);
|
||||
|
||||
void*
|
||||
Allocate(size_t mem_size);
|
||||
void
|
||||
Release(void *where);
|
||||
void
|
||||
ReleaseAll();
|
||||
|
||||
Logical
|
||||
TestInstance() const;
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Global memory allocation
|
||||
//
|
||||
protected:
|
||||
static LWord
|
||||
HeapMark;
|
||||
Logical
|
||||
mainHeap;
|
||||
|
||||
public:
|
||||
static UserHeap
|
||||
MainStorage;
|
||||
|
||||
static size_t
|
||||
GetMainHeapInitialSize();
|
||||
|
||||
friend void*
|
||||
operator new(size_t mem_size);
|
||||
friend void*
|
||||
operator new(size_t mem_size, void* where);
|
||||
friend void
|
||||
operator delete(void *mem_block);
|
||||
};
|
||||
|
||||
void*
|
||||
Get_Caller(int levels);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
//===========================================================================//
|
||||
// File: host.tst //
|
||||
// Project: MUNGA Brick: Connection Library //
|
||||
// Contents: Interface specification for base Host class //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 12/07/94 ECH Initial coding. //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
void
|
||||
HostManager::TestClass()
|
||||
{
|
||||
DEBUG_STREAM << "Starting Host test...\n";
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
Host *local_host;
|
||||
|
||||
local_host = new Host(
|
||||
FirstLegalHostID,
|
||||
GameMachineHostType,
|
||||
(NetworkAddress)1
|
||||
);
|
||||
Register_Object(local_host);
|
||||
|
||||
Check(application);
|
||||
Check(application->GetHostManager());
|
||||
application->GetHostManager()->AdoptLocalHost(local_host);
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
HostID localHostID;
|
||||
|
||||
Check(application);
|
||||
localHostID = application->GetHostManager()->GetLocalHostID();
|
||||
Verify(localHostID != NullHostID);
|
||||
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
EntityID newEntityID;
|
||||
|
||||
Check(application);
|
||||
newEntityID = application->GetHostManager()->MakeUniqueEntityID();
|
||||
Verify(newEntityID != EntityID::Null);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
//===========================================================================//
|
||||
// File: network.hh //
|
||||
// Project: MUNGA Brick: Network Manager //
|
||||
// Contents: Interface specification for network brick //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 11/01/94 JMA Initial coding. //
|
||||
// 11/03/94 ECH Made compatible with BC4.0 //
|
||||
// 11/03/94 ECH Changed NetworkClient to inherit from Node //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#if !defined(HOSTID_HPP)
|
||||
# define HOSTID_HPP
|
||||
|
||||
# if !defined(STYLE_HPP)
|
||||
# include <style.hpp>
|
||||
# endif
|
||||
|
||||
//
|
||||
//---------------------------------------------------
|
||||
// Support types for host manager
|
||||
//---------------------------------------------------
|
||||
//
|
||||
typedef Enumeration HostID;
|
||||
|
||||
const HostID NullHostID = 0;
|
||||
const HostID MapHostID = -1;
|
||||
const HostID FirstLegalHostID = 1;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
//=======================================================================//
|
||||
// File: line.cpp //
|
||||
// Project: Architecture //
|
||||
// Author: J.M. Albertson //
|
||||
//-----------------------------------------------------------------------//
|
||||
// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//=======================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(LINE_HPP)
|
||||
# include <line.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(PLANE_HPP)
|
||||
# include <plane.hpp>
|
||||
#endif
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
Line&
|
||||
Line::operator=(const Vector3D &vector)
|
||||
{
|
||||
Check_Pointer(this);
|
||||
Check(&vector);
|
||||
//
|
||||
// Make sure length of vector is non-zero
|
||||
//
|
||||
length = vector.Length();
|
||||
Verify(length);
|
||||
//
|
||||
// Normalize the vector and put it into the line
|
||||
//
|
||||
direction.x = vector.x/length;
|
||||
direction.y = vector.y/length;
|
||||
direction.z = vector.z/length;
|
||||
return *this;
|
||||
}
|
||||
|
||||
//
|
||||
//###########################################################################
|
||||
//###########################################################################
|
||||
//
|
||||
Line&
|
||||
Line::operator=(const Point3D &point)
|
||||
{
|
||||
Check_Pointer(this);
|
||||
Check(&point);
|
||||
//
|
||||
// Copy the point over into the line.
|
||||
//
|
||||
origin.x = point.x;
|
||||
origin.y = point.y;
|
||||
origin.z = point.z;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Scalar
|
||||
Line::DistanceTo(
|
||||
const Plane &plane,
|
||||
Scalar *product
|
||||
) const
|
||||
{
|
||||
*product = direction * plane.normal;
|
||||
if (Small_Enough(*product))
|
||||
{
|
||||
Check_Fpu();
|
||||
return -1.0f;
|
||||
}
|
||||
Scalar result = -plane.DistanceTo(origin) / *product;
|
||||
Check_Fpu();
|
||||
return result;
|
||||
}
|
||||
|
||||
Scalar
|
||||
Line::DistanceTo(
|
||||
const Sphere &,//sphere,
|
||||
Scalar *//penetration
|
||||
) const
|
||||
{
|
||||
return -1.0f; // HACK
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
//=======================================================================//
|
||||
// File: line.hpp //
|
||||
// Project: Architecture //
|
||||
// Author: J.M. Albertson //
|
||||
//-----------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainments, //
|
||||
// PROPRIETARY AND CONFIDENTIAL //
|
||||
//=======================================================================//
|
||||
|
||||
#if !defined(LINE_HPP)
|
||||
# define LINE_HPP
|
||||
|
||||
# if !defined(RAY_HPP)
|
||||
# include <ray.hpp>
|
||||
# endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Line3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class Line:
|
||||
public Ray
|
||||
{
|
||||
public:
|
||||
Scalar
|
||||
length;
|
||||
|
||||
Line() {}
|
||||
Line(
|
||||
const Ray &ray,
|
||||
Scalar length
|
||||
):
|
||||
Ray(ray),
|
||||
length(length)
|
||||
{}
|
||||
Line(
|
||||
const Point3D &start,
|
||||
const UnitVector &direction,
|
||||
Scalar length
|
||||
):
|
||||
Ray(start,direction),
|
||||
length(length)
|
||||
{}
|
||||
|
||||
void
|
||||
FindEnd(Point3D *result)
|
||||
{Check(this); Check_Pointer(result); Ray::Project(length, result);}
|
||||
|
||||
//
|
||||
// Assignment operators
|
||||
//
|
||||
Line&
|
||||
operator=(const Vector3D &vector);
|
||||
Line&
|
||||
operator=(const Point3D &point);
|
||||
//
|
||||
// Ray intersection functions
|
||||
//
|
||||
Scalar
|
||||
DistanceTo(
|
||||
const Plane &plane,
|
||||
Scalar *product
|
||||
) const;
|
||||
Scalar
|
||||
DistanceTo(
|
||||
const Sphere &sphere,
|
||||
Scalar *penetration
|
||||
) const;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,136 @@
|
||||
//===========================================================================//
|
||||
// File: link.cc //
|
||||
// Project: MUNGA Brick: Connection Library //
|
||||
// Contents: Implementation details of base Link //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Date Who Modification //
|
||||
// -------- --- ---------------------------------------------------------- //
|
||||
// 09/28/94 ECH Initial coding. //
|
||||
// 10/20/94 JMA Fixed style stuff. //
|
||||
// 10/28/94 JMA Made compatible with SGI CC //
|
||||
// 11/03/94 ECH Made compatible with BC4.0 //
|
||||
// 12/12/94 ECH Changed release handling //
|
||||
//---------------------------------------------------------------------------//
|
||||
// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. //
|
||||
// All Rights reserved worldwide //
|
||||
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
||||
//===========================================================================//
|
||||
|
||||
#include <munga.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#if !defined(LINK_HPP)
|
||||
#include <link.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(PLUG_HPP)
|
||||
#include <plug.hpp>
|
||||
#endif
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// Link
|
||||
//#############################################################################
|
||||
//
|
||||
Link::Link(
|
||||
Socket *socket,
|
||||
Plug *plug
|
||||
)
|
||||
{
|
||||
this->socket = socket;
|
||||
this->plug = plug;
|
||||
|
||||
//
|
||||
//----------------------------------------------------
|
||||
// Add this new link to the plugs current set of links
|
||||
//----------------------------------------------------
|
||||
//
|
||||
AddToPlug(plug);
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// ~Link
|
||||
//#############################################################################
|
||||
//
|
||||
Link::~Link()
|
||||
{
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
// Remove this link from the plugs current set of links
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
ReleaseFromPlug();
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// TestInstance
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
Link::TestInstance() const
|
||||
{
|
||||
Check_Signature(socket);
|
||||
Check_Signature(plug);
|
||||
return True;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// ReleaseFromPlug
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
Link::ReleaseFromPlug()
|
||||
{
|
||||
//
|
||||
//-----------------------------------------------------
|
||||
// Remove this link from the plugs current set of links
|
||||
//-----------------------------------------------------
|
||||
//
|
||||
Check(plug);
|
||||
if (plug->linkHead == this)
|
||||
{
|
||||
plug->linkHead = nextLink;
|
||||
}
|
||||
if (prevLink != NULL)
|
||||
{
|
||||
Check(prevLink);
|
||||
prevLink->nextLink = nextLink;
|
||||
}
|
||||
if (nextLink != NULL)
|
||||
{
|
||||
Check(nextLink);
|
||||
nextLink->prevLink = prevLink;
|
||||
}
|
||||
prevLink = nextLink = NULL;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// AddToPlug
|
||||
//#############################################################################
|
||||
//
|
||||
void
|
||||
Link::AddToPlug(Plug *plug)
|
||||
{
|
||||
Verify(plug);
|
||||
Verify_And_Dump(!Is_Signature_Bad(plug),Is_Signature_Bad(plug));\
|
||||
|
||||
Verify((plug)->TestInstance());
|
||||
Verify(Fpu_Ok());
|
||||
Check_All_Signatures();
|
||||
|
||||
|
||||
// Check(plug);
|
||||
if ((nextLink = plug->linkHead) != NULL)
|
||||
{
|
||||
Check(nextLink);
|
||||
nextLink->prevLink = this;
|
||||
}
|
||||
this->prevLink = NULL;
|
||||
plug->linkHead = this;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user